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