C++ 中的 jstack 等价物

Posted

技术标签:

【中文标题】C++ 中的 jstack 等价物【英文标题】:jstack equavalent in C++ 【发布时间】:2009-04-09 06:07:11 【问题描述】:

jstack 对我检查实时运行进程的堆栈跟踪非常有帮助。

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

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

谢谢 D.L.库马尔

【问题讨论】:

【参考方案1】:

承租人...在 solaris 上,无法使用 gdb...我认为您正在寻找的是“pstack” 在我的 solaris 8 系统上,它位于

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

man pstack

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

【讨论】:

【参考方案2】:

我相信 GDB 也有这个功能,请参考 gdb 文档

【讨论】:

其实 GDB/DBX 可以做到这一点。但我的过程有时会挂起,很少见。所以当它挂起时,我想知道哪里出了问题。【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于C++ 中的 jstack 等价物的主要内容,如果未能解决你的问题,请参考以下文章

C++ 中的 Java HashSet 等价物

C# 中的 C++ 模板继承等价物是啥?

将 Objective C“代码块”转换为 C++ 中的等价物

C++ 中的 <map> 的 C# 等价物是啥? [复制]

Java 中的 C++ Pair<L,R> 等价物是啥?

jQuery 中的 C++ memset() 等效项