【问题标题】:Reading variables while debugging with GDB (C)使用 GDB 调试时读取变量 (C)
【发布时间】:2016-02-24 06:36:35
【问题描述】:

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

 0x000007c4 variable1.0
 0x000007c8 variable2.1

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

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

【问题讨论】:

    标签: c debugging gdb


    【解决方案1】:

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

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

    【讨论】:

    • 我使用了动态预订,忘记提及但我放了c标签。
    猜你喜欢
    • 2021-02-27
    • 2016-01-12
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多