【问题标题】:Can I make gdb/ddd quickly skip over to the beginning of an infinite recursion error?我可以让 gdb/ddd 快速跳到无限递归错误的开头吗?
【发布时间】:2019-05-12 12:11:00
【问题描述】:

如果我有一个无限递归错误,当我在ddd 中发现这个错误时,需要很长时间才能从段错误中产生回溯。

如果ab,c,等是函数,调用栈是

 a b c c c c ... (thousands) ... c c (SIGSEGV)

 a b c b c ... (thousands) ... b c b c (SIGSEGV)

生成相关的堆栈跟踪可能需要几分钟时间。

如果我怀疑是这种情况,有没有办法让 gdb/ddd 快速跳到重复的开头,而不是等待它一直跟踪到后面?

【问题讨论】:

    标签: debugging recursion gdb segmentation-fault


    【解决方案1】:

    在无限递归的情况下,您不必打印完整的回溯。您只需要few outermost frames 即可了解无限递归的原因。例如,您可以使用以下命令打印 10 个最外层帧:

    (gdb) bt -10
    

    要打印的确切帧数可能会有所不同,具体取决于无限递归的开始位置。

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 2021-04-04
      相关资源
      最近更新 更多