我不是在寻找编程技巧。我的问题是关于理解第三方开发的代码的最佳方式是什么。
我有一个特定语言的应用程序代码(可能是C / C ++,Java等)。此代码使用多个线程来控制不同的进程。应用程序生成一个日志,显示对每个线程的相关函数的所有调用。
我必须分析此代码以了解其操作并能够对算法进行改进。我对线程工作很少,所以我不知道哪种方法最开始分析并跟踪每个线程的执行情况。
你能给我任何推荐吗?
答案 0 :(得分:0)
如果您能够联系任何代码的原始开发人员,与他们进行对话(通过语音或电子邮件),并要求他们描述他们打算如何工作,那么总是优先考虑通过查看代码来反向设计他们的意图。如果您无法直接与开发人员联系,那么可能会有一个特定于图书馆的开发人员论坛或其他在线资源,您可以与有经验的人讨论图书馆的结构。调试它。
如果这不是一个选项(或者如果你已经做到了并且仍然不觉得你对事情的理解得很好),那么我经常会发现这种分析(通过分析工具) ,或者只是暂时将printf()
[或类似的]跟踪调用放入各个地方的代码库并查看打印时的内容)是找出代码的哪些部分实际在哪些阶段使用的好方法该计划的执行。这将有助于您确认(或反驳)有关代码库如何工作的理论。知道生成每个线程的位置和时间,其入口函数的位置,以及它的父线程再次连接的位置和时间特别有用。
最后,开始查看每个线程检查和/或修改的各种数据(例如,对象和成员变量),以及如何同步/序列化对每个这些数据的访问。假设代码没有错误,代码库的关键部分是线程间通信发生位置的良好指标。