0

我有一个项目,我正在分析 C++ 文件中的 DWARF 信息。我的系统适用于简单的 C++ 文件,但是当我开始添加 #includes 时会变得一团糟,因为 #includes 会转储大量额外(通常是不必要的)代码。有没有办法告诉编译器(g++)不为标准库生成调试信息?我会这样认为,因为当您调试代码时,IDE 会显示“源代码不可用”的块。

4

1 回答 1

0

有没有办法告诉编译器(g++)不为标准库生成调试信息?

当您说“标准库”时,您可能指的是 STL,它的大部分代码都在头文件中,因此STL 代码被包含在您的程序中。

不,没有办法告诉 GCC 生成一些调试信息,但不是它在给定翻译单元中编译的所有源代码。

那么调试信息有时只能在 IDE 中部分可用?

与 STL 不同,大多数其他库的代码不在您的头文件中#include,而是在实际的可链接库中(即在一组不同的翻译单元中,一起归档到libfoo.a,或一起链接到libfoo.so)。这些可链接库可以使用不同的标志进行编译,并且通常在进行优化和不进行调试的情况下进行编译。

于 2013-08-25T06:50:41.280 回答