如何查看Valgrind环境下运行进程的pstack
查看Valgrind托管进程的pstack方法
先找到实际的process-x进程PID:
- 执行
ps -ef | grep process-x,Valgrind运行目标进程时会fork出一个子进程,输出里能看到两个关联进程,其中子进程就是你要找的process-x,记下它的PID。 - 或者已知Valgrind进程PID的话,直接用
pgrep -P <valgrind-pid>,把<valgrind-pid>换成Valgrind的进程号,就能直接拿到子进程(process-x)的PID。
- 执行
拿到目标PID后,直接跑pstack命令:
pstack <target-pid>,这里的<target-pid>就是刚才找到的process-x的PID,执行后就能看到目标进程的栈回溯了。
备用方案:用Valgrind+GDB获取栈信息
- 启动进程时加上Valgrind的gdb参数:
valgrind --vgdb=yes --vgdb-error=0 ./process-x - 新开终端用GDB连接:
gdb ./process-x,然后在GDB里输入target remote | vgdb,连接上后执行thread apply all bt,就能得到所有线程的栈回溯,效果和pstack一致。
- 启动进程时加上Valgrind的gdb参数:
内容的提问来源于stack exchange,提问作者Arulprakasan
相关产品推荐
相关产品推荐

