我试图调试大量使用 #define
语句来设置整个代码中使用的不同值 . 我需要能够看到这些值是什么,以帮助我调试(因为它们包括一些非常重要的信息 .
经过一些挖掘后,我发现 info macro FOO
和 macro 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并使用 cc
和 gcc
编译程序 Apple LLVM version 7.0.2 (clang-700.1.81)
. 另外,gdb是使用自制软件安装/构建的 .