为什么GDB回溯只向我显示父级的调用而不是嵌套函数?

问题描述 投票:0回答:1

我正在 gdb 上尝试回溯,基本上是在 setupCommands 上(在 VSCode 中):

{
    "description": "Backtrace",
    "text": "set backtrace past-main",
    "ignoreFailures": true
}

当我执行 bt -10 时,它只向我显示父级的调用,而不是嵌套的调用。

例如,如果我有: functA 调用 funcB (在 funcB 内部我调用 funcC 和 funcD),如果我停在 funcB 末尾,我只能看到 funcA 和 funcB (没有 C 和 D)。

如何在回溯中启用整个跟踪?要查看每个线程上任何级别的每条指令调用? (例如,我只需要最后 1000 个)。

c++ debugging gdb backtrace
1个回答
0
投票

我认为你对回溯的理解是有缺陷的。这是调用堆栈回溯,而不是代码执行的跟踪。

如果停在B,那么C和D就不在调用堆栈中。如果您要停在 C 处,您会看到

A->B->C
,如果您停在 D 处,则会看到
A->B->D

© www.soinside.com 2019 - 2024. All rights reserved.