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