如何编写使用gdb的脚本?

时间:2014-02-12 18:51:09

标签: automation gdb

我有一个二进制文件,我用“-g -O2”g ++选项编译。我的二进制文件崩溃后创建的核心转储文件也很少。我手动做的是用二进制文件和核心转储文件作为参数调用gdb,然后使用“信息线程”来知道我有多少线程然后为每个线程我做“线程n”在哪里n是线程编号,然后是“bt”以查看后面的跟踪。是否可以使用脚本自动执行此过程?

2 个答案:

答案 0 :(得分:2)

FWIW使用它来查看所有线程中的回溯更简单:

thread apply all bt

您可能也喜欢

thread apply all bt full

也显示了所有局部变量。

答案 1 :(得分:0)

嗯,我想这是一个简单的问题。由于我的二进制文件具有恒定数量的线程,因此我编写了一个名为gdb.cmd的脚本,其中包含以下内容

set pagination off
info threads
thread 1
bt
thread 2
bt
...
thread 11
bt
q

然后使用bash for loop

for f in `ls core.*` ; do gdb <binary name> $f -x gdb.cmd > /tmp/$f ; done