【问题标题】:How to write a script which uses gdb?如何编写使用 gdb 的脚本?
【发布时间】:2014-02-12 18:51:08
【问题描述】:

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

【问题讨论】:

    标签: automation gdb


    【解决方案1】:

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

    thread apply all bt
    

    你可能也喜欢

    thread apply all bt full
    

    它也显示了所有的局部变量。

    【讨论】:

      【解决方案2】:

      嗯,我想这是一个简单的问题。由于我的二进制文件具有恒定数量的线程,我编写了一个名为 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 2015-10-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多