在 Visual Studio 中,如果单击调用堆栈中的条目,则会打开编辑器并显示该函数的源代码。 gdb 中是否有类似的可能?我在 gdb 中使用 tui(文本用户界面)。是否可以让 tui 显示回溯中给定条目的源代码?

如果没有,那么您如何利用回溯中的信息?您是否手动打开文件并导航到正确的行?

最佳答案

当您在断点处使用 gdb(在任何模式下)停止并且可以使用 backtracewhere 命令查看回溯时,使用 updown 命令来关注回溯的不同功能(帧)。

您可以使用 up 2 向上移动两帧。 list 命令将显示当前帧周围的源代码行。

我认为,tui 会在 up/down 命令之后改变当前显示的函数/寄存器;并且 tui 中不能有点击式回溯(tui 中是否支持鼠标?)。只有记录的 tui 窗口是
https://sourceware.org/gdb/onlinedocs/gdb/TUI-Commands.html



在 TUI 中有更改当前帧的键,但在普通 TUI 模式( https://sourceware.org/gdb/onlinedocs/gdb/TUI-Keys.html )中没有,因此您可以使用 gdb 的文本命令。

还有“TUI Single Key Mode”,由 Ctrl-x s 激活,该模式下有 up/down 命令:u/dw 获取回溯。该模式记录在 https://sourceware.org/gdb/onlinedocs/gdb/TUI-Single-Key-Mode.html#TUI-Single-Key-Mode :



您还可以尝试一些带有 GUI( gnu ddd KDbg )的调试器,或大多数 Linux IDE 中内置的任何其他 gdb 包装器( listwiki list :Eclipse、Netbeans、CLion、KDevelop、Code::Blocks、CodeLite 等)。它们都更现代,更方便调试。

关于debugging - 在 gdb 中使用函数调用堆栈导航,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38448284/

10-13 09:39