首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Linux上监控多线程(pthread) C++程序的每个线程行为?

如何在Linux上监控多线程(pthread) C++程序的每个线程行为?
EN

Stack Overflow用户
提问于 2012-01-26 13:08:44
回答 2查看 2K关注 0票数 1

我正在Linux (redhat)上运行一个多线程(pthread) C++程序。

我想遵循正在运行的程序的行为,但是线程的打印输出彼此交错。很难找出每个线程的行为。

我想使用DDD (一个gdb GUI)来分析程序的行为,但它需要"motif",当我安装“motif”时,它有一个错误:

cc -c -O -I../../include -I../../imports/x11/include/X11 ./ccimake imake.c imake.c:162:21:错误: Xosdefs.h:没有这样的文件或目录

我还使用了helgrind和drd工具,但有很多纯文本打印输出,这使得它混淆了每个线程的行为。

你能推荐一些更好的开源工具来帮助我调试和分析/监控多个pthread的行为吗?

是否可以在一个不同的终端xterm窗口中显示每个线程,而不会将所有线程混合在一起?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-02-25 19:08:26

像printf这样的标准打印函数不是线程安全的。如果您要登录到stdout或单个文件,则需要将日志记录函数视为临界区,并使用互斥锁保护它们。否则,您的日志可能会交错或乱序。

或者,您可以让每个线程创建自己的日志文件,将线程名/id和时间戳写入每个文件,并在不同的终端中“跟踪”这些日志文件。

票数 1
EN

Stack Overflow用户

发布于 2012-01-26 16:39:39

  • 确保使用printf进行打印,然后至少可以完整打印各行
  • 确保每个线程都使用前缀,如输出到文件:your_program > logfile.txt
  • For printf,do:
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9014180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档