GDB在断点触发时, 怎样查看函数的自动变量和局部变量?怎样查看断点所在函数的源代码?
在 GDB 中,当断点触发时,你可以查看函数的自动变量和局部变量,并且可以查看断点所在函数的源代码。以下是如何进行这些操作的详细步骤:
查看自动变量和局部变量
- 使用 print 命令
- 查看自动变量或局部变量
(gdb) print <变量名> - 例如,如果你在断点处想查看变量 localVar 的值,可以使用:
(gdb) print localVar - 查看更复杂的表达式
- 你可以打印更复杂的表达式,例如数组或结构体的成员:
(gdb) print myStruct.member - (gdb) print myArray[3]
- 查看自动变量或局部变量
- 使用 info locals 命令
- 查看所有局部变量(gdb) info locals
- 该命令会列出当前函数中所有局部变量及其值。
- 使用 info args 命令
- 查看函数参数(gdb) info args
- 该命令会列出当前函数的所有参数及其值。
- 使用 display 命令
- 自动显示变量
如果你希望在每次断点触发时自动显示某些变量的值,可以使用 display 命令:(gdb) display <变量名> - 示例:(gdb) display localVar
- 自动显示变量
查看断点所在函数的源代码
- 使用 list 命令
- 查看当前源代码
(gdb) list - 该命令会显示当前执行位置周围的源代码。
- 查看特定文件和行号的源代码
(gdb) list <文件名>:<行号> - 示例:
(gdb) list main.cpp:42
- 查看当前源代码
- 查看函数的源代码
- 查看当前函数的源代码
如果你想查看当前函数的完整代码,可以使用:
(gdb) list <函数名> - 这会列出当前函数的源代码。
- 通过断点位置查看代码
如果你知道断点的编号,可以直接查看断点所在的文件和行号的代码:
(gdb) info breakpoints - 这个命令会列出所有断点及其位置。你可以根据断点的文件和行号使用 list 命令来查看代码。
- 查看当前函数的源代码
总结
- 查看局部变量:使用 print <变量名>、info locals 和 info args 命令。
- 自动显示变量:使用 display <变量名> 命令。
- 查看源代码:使用 list 命令来查看当前或特定文件和行号的源代码。
这些命令可以帮助你在调试过程中更好地理解和检查代码的状态。