是否有类似于 Sysinternals 的 Process Explorer 的工具可以查看正在运行的线程的调用堆栈?

是否有类似于 Sysinternals 的 Process Explorer 的工具可以查看正在运行的线程的调用堆栈?

是否有类似于 Sysinternals 的 Process Explorer 的工具可以查看正在运行的线程的调用堆栈?

到目前为止,我尝试了 htop、qps 和 Linux Process Explorer。它们都无法提供该信息。

谢谢!

答案1

GdbGNU 调试实用程序可以提供这样的功能,尽管仅有的针对选定的程序或流程单独进行。不是一个简单的方法,可以像 Windows 上的 Sysinternals 程序一样在系统上运行的进程的调用堆栈之间切换。但是,您可以尝试pstack,但我没有取得太大的成功。

你还必须安装dbg软件包(即符号软件包),以便任何gdb调用堆栈回溯都能正常工作。请参阅Ubuntu 维基有关这些软件包的更多信息。基本上,dbg软件包版本的安装与正常版本非常相似。例如,您可以运行

sudo apt-get install xserver-xorg-core-dbg

您可以通过启动下面的程序来对程序进行回溯gdb,也可以通过附加到该进程对已经运行的程序进行回溯gdb:请参阅这里了解更多详情。

请参见官方手册有关回溯的更多信息gdb以及更多有用的信息,请访问Ubuntu 调试页面

使用等分析正在运行的进程的其他方法strace,对开发人员等在分析进程及其系统调用(而不是堆栈调用)时很有用,已移至此处的这个问题(因为我认为它们现在在那里更相关):

相关内容