在查看core文件的堆栈时候,需要进入gdb,然后执行"bt"命令打印堆栈。但是这需要交互操作,不适合放在脚本中运行。如何不进入gdb的命令行界面,直接打出所有堆栈然后退出?
如果觉得--ex很多行很麻烦 可以只--ex "source xxx.py" 来跑一个PYTHON脚本帮你作
相关GDB里跑PYTHON的API可以见这里
https://sourceware.org/gdb/current/onlinedocs/gdb/Python-API.html
pstack. 是个bash脚本。
http://rdc.taobao.com/blog/cs/?p=718
gdb -q --batch --ex "set height 0" -ex "thread apply all bt full" [可执行文件] [core文件]
解释:
-q: 不打印gdb的版权消息
--batch: 执行批处理,不进入交互模式
--ex: 执行gdb 命令
"set height 0": 不对输出进行分页
"thread apply all bt full": 打印所有线程堆栈