问题标签 [pstack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 使用 pstack 打印所有线程 stacktrace
我正在尝试使用 pstack 打印特定进程的所有线程的堆栈跟踪,但我只得到主线程。
根据 pstack 描述:
pstack - 打印正在运行的进程的堆栈跟踪
...
如果进程是线程组的一部分,那么 pstack 将为组中的每个线程打印出堆栈跟踪。
我使用 gdb 附加到进程并验证有更多线程。我使用其中一个线程 id 运行 pstack,并得到了请求的结果。
[我也使用了 ps -j 并且看到了具有相同组 id 的其他进程,但我认为它不相关]
我阅读了相关的 pstack 问题,但没有看到任何可以帮助我的东西。也搜索了谷歌,但没有看到有人问这个问题。
谢谢
我没有注意到“要转储线程信息,您必须使用 LinuxThreads libpthread.so 库的调试感知版本。”
solaris-10 - 显示进程的所有堆栈历史记录
如何在 Solaris 上显示进程的所有函数调用?
dbx 和 pstack 打印调用堆栈。我想要的是进程调用的所有函数的列表。换句话说,进程的几个 pstacks 的输出。
linux - 如何通过内存地址解析函数名?
虽然Linux
没有提供pstack
,Solaris
但RedHat
提供了一个脚本可以做同样的事情:
在中执行脚本Suse
:
我的问题是如何从地址解析函数名?比如0x00007fe4ab73eb36
。我可能通过安装debug-info
包知道,但是如何知道安装哪些包?
更新:
根据 Mark Plotnick 的评论,我使用以下命令来获取debuginfo
缺少哪些包:
安装完所有需要debuginfo
的包后,符号就可以解决了:
但是 " objdump -t /proc/7286/exe | grep main
" 什么也没输出:
java - pstack 解决了 JVM 冻结问题
我面临一个奇怪的问题解决方案:在运行应用程序服务器时,我们的 JVM(1.6)不时冻结(可能是因为阻塞线程或垃圾收集)。如果我们运行 pstack 命令,问题就解决了。
有人能解释一下 pstack 如何解决这个冻结问题吗?我想了解“仅”读取堆栈跟踪的命令如何能够解除阻塞/解冻 JVM 以了解有关冻结的更多信息。
linux - 为什么 pstack 比 gdb 快得多,只需附加、保存堆栈和退出?
我有一个脚本,它使用如下命令文件运行 gdb:
为什么 pstack 比这个脚本快得多?我能以某种方式用 gdb 实现这种速度吗?
编辑:区别在于 gdb 版本。我使用了 gdb-7.10,转储堆栈跟踪大约需要 14 秒。使用 pstack 使用的 gdb 7.0.1,需要 2 秒。-readnever
大部分时间都用 gdb-7.10 从我们的库中加载符号,我在新版本中找不到合适的选项。
debugging - 如何在 gdb-7.10 中禁用符号加载?
在旧版本的 gdb 中,有一个选项 ,-readnever
可以抑制符号加载。我可以使用 gdb-7.10 获得相同的结果吗?这仅用于堆栈跟踪,而不是用于调试。
linux - 为什么“pstack”只打印一个线程的内容?
我OS
的是RHEL 7
,我运行一个简单的Go
程序:
在其运行期间,我检查进程的线程数:
使用pstack
附带的命令时RHEL
,它只打印一个线程的堆栈:
为什么pstack
只打印一个线程的内容?
PS:pstack
脚本在这里:
erlang - erlang中的pstack等价物
当 Erlang 系统挂起时,我想知道系统在此期间在做什么。对于 ac/c++ 程序,我可以轻松地运行 pstack,但是我在 Erlang 中没有找到用于此目的的方便工具。
Erlang 中的 pstack 等价物是什么?
实际上我想检查以下进程的运行堆栈跟踪。
我启动了一个新的 Erlang shell 并启动了 webtool 并检查了 appmon 但是我找不到上面的应用程序。什么可能导致这种情况?
谢谢
linux - 如何在 Linux 中查看挂起进程中特定线程的堆栈跟踪
我有一个在 Linux 下运行时卡住的多线程进程。但我没有多线程版本pstack
(使用 别名gstack
)。因此,gstack <pid>
没有为我提供任何东西。我如何(a)附加gdb
到已经运行的进程(b)获取各个线程的堆栈跟踪(c)从threadid(如果知道)知道正在运行的进程的threadid(d)我如何查看堆栈跟踪/调用堆栈卡住进程下的正在运行的线程?
stack-trace - pstack 不打印堆栈输出
我正在运行 pstack 来查找在两台机器(都是 RHEL)上运行的应用程序的函数堆栈
在我的一台机器上,它按预期工作
但是在其他机器中它只是打印线程的名称
我一直在寻找解决此问题的方法,但没有取得太大成功。我发现的唯一重要信息在这里
要转储线程信息,您必须使用 LinuxThreads libpthread.so 库的调试感知版本。
(要检查,请在 pthreads 库上运行 nm(1),并
确保定义了符号“__pthread_threads_debug”。)较新的 NPTL libpthread.so 库不支持线程。
在两台机器上对 /lib64/libpthread.so.0 执行 nm 时,我发现两者都有“__pthread_debug”。
将感谢帮助。