我试图使用gdb调试我对一个相当大的c程序的一些补充。我尝试调试的程序广泛使用#define
语句来设置整个代码中使用的不同值。我需要能够看到这些值是什么,以帮助我调试(因为它们包括一些非常重要的信息。
经过一番挖掘后,我发现info macro FOO
和macro expand FOO
命令应该能够在-g3
选项中打印这些值(同时尝试了-gdwarf-2
和{{ 1}}标志也被传递给编译器(如here所述)。但是,每当我尝试使用它时,我都会得到
-ggdb3
现在,我确定已定义宏,否则前一行代码将无法运行。另外,我确定我已将The symbol `FOO' has no definition as a C/C++ preprocessor macro
at <user-defined>:-1
标志传递给编译器。我对问题的位置有一个想法,那就是定义宏的位置。目前,宏在头文件中定义,该头文件与其余文件不在同一目录中(即如果源文件在-g3
中,则宏在/foo/bar/blam/..
中定义。鉴于此我想想也许问题是gdb不知道要查看这个目录,所以我尝试在gdb中发出/def/mac/here/
命令并给它指向包含头文件的目录的路径(基于this这仍然没有解决问题。
有谁知道如何获取这些宏的值?如果是相关的,我正在运行gdb版本7.11并使用编译程序
directory
和cc
都gcc
。另外,gdb是使用自制软件安装/构建的。