理解和分析多线程代码的最佳方法是什么?

JCMiguel

我不是在寻找编程技术。我的问题是关于理解第三方开发的代码的最佳方式是什么。

我有一个特定语言的应用程序代码(可以是 C/C++、Java 等)。此代码使用多个线程来控制不同的进程。应用程序生成一个日志,显示对每个线程的相关函数的所有调用。

我必须分析此代码以了解其操作并能够对算法进行改进。我很少使用线程,所以我不知道哪种方法最方便开始分析并跟踪每个线程的执行情况。

你能给我任何建议吗?

杰里米·弗里斯纳

如果您能够联系任何代码的原始开发人员,与他们进行对话(通过语音或电子邮件)并要求他们描述他们打算如何工作总是比仅通过查看来尝试反向工程他们的意图更可取在代码处。如果您不能直接联系开发人员,那么也许有一个特定于库的开发人员论坛或其他在线资源,您可以在那里与有使用/调试经验的人讨论库的结构。

如果这不是一个选项(或者如果你已经这样做了但仍然觉得你对事情的理解不够好),那么我经常会发现这种分析(通过分析工具,或者只是通过暂时放置printf()[或类似] 跟踪-在不同位置调用代码库并查看何时打印什么)是找出代码的哪些部分在程序执行的哪个阶段实际使用的好方法。这将帮助您确认(或反驳)您关于代码库如何工作的理论。知道每个线程在哪里和何时产生、它的入口函数在哪里以及它的父线程在哪里/何时再次加入是特别有用的。

最后,开始查看每个线程检查和/或修改的各种数据(例如对象和成员变量),以及如何同步/序列化对每个这些数据的访问。假设代码没有错误,代码库的关键部分是线程间通信发生位置的良好指标。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

做多线程的最佳方法是什么?

多线程的最佳方法是什么?

在node.js中执行“多线程”的最佳和有效方法是什么?

在JavaFX 8中管理多线程的最佳方法是什么?

当一个线程发生故障时终止多线程代码的正确方法是什么?

Java:在时间紧迫的应用程序中实现高性能多线程的最佳方法是什么?

在多线程Rails环境中使用Redis的最佳方法是什么?(彪马/ Sidekiq)

在多线程应用程序中使用gorm的最佳方法是什么?

使用Java多线程,协调找到最佳结果的最有效方法是什么?

处理长文件行的最佳多线程方案是什么?

在多线程中使用泰坦图的最佳实践是什么?

实际以异步/等待模式“多线程”执行的代码是什么?

等待线程的最佳方法是什么?

使用线程和tkinter模块在python中停止线程并避免“ RuntimeError”的最佳方法是什么?

什么是在SerialPort上进行多线程的最佳方法

Go中多线程LevelDB的合适方法是什么?

清理代码的最佳方法是什么?

复制Rails代码的最佳方法是什么?

调试角度代码的最佳方法是什么?

在PyQt中,在主窗口和线程之间共享数据的最佳方法是什么

这些算法的最佳和最差情况分析是什么?

在多线程程序中通过队列发送数据的最佳机制是什么?

使Roslyn分析仪可配置的最佳方法是什么?

处理/格式化代码中的Javadoc和注释的最佳方法是什么?

查找和替换大量代码(崇高文本)的最佳方法是什么

维护和进行安全会话的最佳方法是什么?我目前使用的代码

使多个线程同时读取文件的最佳方法是什么?

Python:组织此线程的最佳方法是什么?

用Java的并行线程写入文件的最佳方法是什么?