【发布时间】:2014-02-12 18:51:08
【问题描述】:
我有一个使用“-g -O2”g++ 选项编译的二进制文件。我的二进制文件崩溃后创建的核心转储文件也很少。我手动做的是使用二进制文件和核心转储文件作为参数调用gdb,然后使用“信息线程”来知道我有多少线程,然后对于我执行的每个线程“线程 n”,其中 n 是线程号,然后“bt”查看回溯。是否可以使用脚本自动执行此过程?
【问题讨论】:
标签: automation gdb
我有一个使用“-g -O2”g++ 选项编译的二进制文件。我的二进制文件崩溃后创建的核心转储文件也很少。我手动做的是使用二进制文件和核心转储文件作为参数调用gdb,然后使用“信息线程”来知道我有多少线程,然后对于我执行的每个线程“线程 n”,其中 n 是线程号,然后“bt”查看回溯。是否可以使用脚本自动执行此过程?
【问题讨论】:
标签: automation gdb
FWIW 使用它来查看所有线程中的回溯会更简单:
thread apply all bt
你可能也喜欢
thread apply all bt full
它也显示了所有的局部变量。
【讨论】:
嗯,我想这是一个简单的问题。由于我的二进制文件具有恒定数量的线程,我编写了一个名为 gdb.cmd 的脚本,其内容如下
set pagination off
info threads
thread 1
bt
thread 2
bt
...
thread 11
bt
q
然后使用 bash for 循环
for f in `ls core.*` ; do gdb <binary name> $f -x gdb.cmd > /tmp/$f ; done
【讨论】: