使用GDB(C)调试时读取变量

时间:2016-02-23 16:21:11

标签: c debugging gdb

我是GDB debbuging的初学者。我需要在GDB中读取变量,我使用命令info变量并获取此信息:

 0x000007c4 variable1.0
 0x000007c8 variable2.1

我在变量函数中设置了一个断点,这些定义了long *的类型。如何正确读取这些内部的值?我尝试使用show,display,print $ variable1,p / x变量等命令。

对不起我的语法,我不是母语。

1 个答案:

答案 0 :(得分:2)

要查看内存的内容,请使用gdb的 x / FMT ADDRESS 命令,例如 x / d 0x000007c4 (从地址0x000007c4显示整数大小的对象,并以十进制格式化。)

gdb中的 info variables 命令将列出所有全局和静态变量及其程序地址。您没有描述您正在使用的语言或实现,但在C中,变量名称“variable1.0”无效。因此,它必须由某个链接编辑器或编译器在后处理中创建。因此,符号可能不存在于调试信息中,只能通过直接查看内存的内容来访问,这就是gdb p 命令不起作用的原因(没有有效的表达式向您显示该变量因为它不是变量,而只是地址上的符号。