【问题标题】:Tell compiler to not generate debug info for standard libraries.告诉编译器不要为标准库生成调试信息。
【发布时间】:2013-08-24 06:54:27
【问题描述】:

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

【问题讨论】:

  • 只要你用优化编译,我认为没有调试信息是默认的
  • @Kal - OP 需要调试信息,但仅限于“用户”代码,而不是库。
  • @MichaelBurr 正确。

标签: c++ debugging compiler-construction include g++


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 由于 STL 代表 standard 模板 libraries,这是一个安全的假设……是的。你确定你的答案吗?例如,调试信息有时只能在 IDE 中部分可用?据我了解,这是因为库被编译为发布版本,而您的代码被编译为调试版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 2012-08-12
  • 1970-01-01
  • 2020-04-02
  • 1970-01-01
相关资源
最近更新 更多