我试图调试大量使用 #define 语句来设置整个代码中使用的不同值 . 我需要能够看到这些值是什么,以帮助我调试(因为它们包括一些非常重要的信息 .

经过一些挖掘后,我发现 info macro FOOmacro expand FOO 命令应该能够打印这些值,如果 -g3 选项(也尝试了 -gdwarf-2-ggdb3 标志)传递给编译器(如here所述) . 但是,每当我尝试使用它时,我都会得到

The symbol `FOO' has no definition as a C/C++ preprocessor macro
at <user-defined>:-1

现在,我确定已将 -g3 标志传递给编译器 . 我对问题的位置有一个想法,那就是定义宏的位置 . 目前宏是在头文件中定义的,该头文件与其余文件不在同一目录中(即如果源文件在 /foo/bar/blam/.. 中,那么宏在 /def/mac/here/ 中定义 . 鉴于此我认为问题可能是gdb没有不知道要查看这个目录,所以我尝试在gdb中发出 directory 命令并给它包含头文件的目录路径(基于this) . 这仍然没有解决问题 .

有谁知道如何获得这些宏的值?如果它是相关的我正在运行gdb版本7.11并使用 ccgcc 编译程序 Apple LLVM version 7.0.2 (clang-700.1.81) . 另外,gdb是使用自制软件安装/构建的 .