![](/img/trans.png)
[英]How to find a (segmentation fault) bug in C++ (pthread) multithread program on linux?
[英]How to monitor each thread behavior of a multithread (pthread) C++ program on Linux ?
我正在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窗口中显示每个线程?
谢谢
标准打印功能(例如printf)不是线程安全的。 如果要记录到stdout或单个文件,则需要将记录功能视为关键部分,并使用互斥锁对其进行保护。 否则,您的日志可能会被交错或混乱。
或者,您可以让每个线程创建自己的日志文件,将线程名称/ id和时间戳记写入每个文件,然后在单独的终端中“尾随”这些日志文件。
printf
进行打印,然后至少将完整打印这些行 [MainThread] Log message...
your_program > logfile.txt
tail -f logfile.txt | grep <thread_prefix>
tail -f logfile.txt | grep <thread_prefix>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.