我不是在寻找编程技术。我的问题是关于理解第三方开发的代码的最佳方式是什么。
我有一个特定语言的应用程序代码(可以是 C/C++、Java 等)。此代码使用多个线程来控制不同的进程。应用程序生成一个日志,显示对每个线程的相关函数的所有调用。
我必须分析此代码以了解其操作并能够对算法进行改进。我很少使用线程,所以我不知道哪种方法最方便开始分析并跟踪每个线程的执行情况。
你能给我任何建议吗?
如果您能够联系任何代码的原始开发人员,与他们进行对话(通过语音或电子邮件)并要求他们描述他们打算如何工作总是比仅通过查看来尝试反向工程他们的意图更可取在代码处。如果您不能直接联系开发人员,那么也许有一个特定于库的开发人员论坛或其他在线资源,您可以在那里与有使用/调试经验的人讨论库的结构。
如果这不是一个选项(或者如果你已经这样做了但仍然觉得你对事情的理解不够好),那么我经常会发现这种分析(通过分析工具,或者只是通过暂时放置printf()
[或类似] 跟踪-在不同位置调用代码库并查看何时打印什么)是找出代码的哪些部分在程序执行的哪个阶段实际使用的好方法。这将帮助您确认(或反驳)您关于代码库如何工作的理论。知道每个线程在哪里和何时产生、它的入口函数在哪里以及它的父线程在哪里/何时再次加入是特别有用的。
最后,开始查看每个线程检查和/或修改的各种数据(例如对象和成员变量),以及如何同步/序列化对每个这些数据的访问。假设代码没有错误,代码库的关键部分是线程间通信发生位置的良好指标。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句