在使用多线程(pthread)进行调试时,GDB 会出现严重问题。*nix 上是否还有其他适用于 C/C++ 的优秀多线程调试器?
6 回答
在调试多线程应用程序时,我个人没有遇到任何 GDB 特定问题,因此详细说明您遇到的“问题”可能对您有所帮助。它将帮助我们更好地回答您。
过去在 linux 中调试多线程应用程序时,我使用过几种辅助工具,其中大部分都基于 GDB 而不是替代它。这些包括:
- DDD http://www.gnu.org/software/ddd/
- 日食http://www.eclipse.org/
- 本机 POSIX 线程库 (NTPL) 跟踪工具http://nptltracetool.sourceforge.net/
此外,如果您不熟悉在 Linux 中进行调试(即使您不是!),我强烈推荐您可以在此处找到题为“调试 Linux 应用程序”的论文:
http://www.scribd.com/doc/3009706/Debugging-Linux-Applications
Allinea DDT ... 用 C、C++ 和 Fortran 编写的标量、多线程和大规模并行应用程序的图形调试器。
TotalView是国家实验室用于大型集群的工具。我相信它也对线程并行性有一些很好的支持。它可能超出了您的价格范围,但您可以免费试用。
从我的搜索中,我没有找到任何好的用于 *nix 的多线程调试器。GDB 似乎越来越好,上次我不得不在 FreeBSD (7.0-RELEASE) 上调试多线程应用程序时,它表现得相当好,让我找到了错误所在。
我曾经寻找过一个 gdb 替代品,但不幸的是,我找到的每一个都是基于 gdb 的。我认为这是因为 gdb 与 gcc 有着错综复杂的联系,第三方调试器很难跟上 gcc 的每一个变化。
Windows 的 AIX 调试器,让您调试多线程应用程序。