1

jstack 在检查实时运行进程的堆栈跟踪方面对我很有帮助。

C++ 中是否有任何工具可以执行此任务。我正在使用 Solaris/GCC 编译器。

实际上 GDB/DBX 可以做到这一点。但我的过程有时会挂起,很少见。所以当它挂起时,我想知道它哪里出错了。只需实时跟踪即可。

谢谢 DL 库马尔

4

4 回答 4

3

承租人......在solaris上,不能使用gdb......我认为你正在寻找的是'pstack'在我的solaris 8系统上它位于

/usr/bin/pstack
usage:  pstack [-F] { pid | core } ...

man pstack

显示了一个很好的相关工具列表,您可能会发现在诊断中非常有用。

于 2009-04-09T19:27:40.160 回答
1

我相信 GDB 也有这种能力,请参考 gdb 文档

于 2009-04-09T07:20:47.330 回答
1

考虑到您在 Solaris 上运行,并且您不想使用 GDB,DTrace 似乎是显而易见的剩余解决方案。

但是您是否出于错误的原因而解雇了 GDB?您可以将 GDB 附加到现有的挂起进程。

于 2009-04-09T08:48:12.970 回答
1

几年前,我在 DDJ 上写了一篇关于在 C/C++ 中使用 Windows 和 Unix/Linux 转储堆栈的文章。也许它可以帮助你:

http://www.ddj.com/architect/185300443

于 2009-04-09T09:37:56.003 回答