debugging - 让 gcc 将相对文件名放入调试信息中

标签 debugging gcc cmake debug-symbols

我正在编译的项目使用 CMake,它 loves absolute pathnames .

当我在启用调试信息的情况下进行编译时,gcc 将这些长名称放入 .debug_str 部分,这不利于调试。我希望那里有相对于项目根的短路径名。

是否有一些选项可以告诉 gcc 在发出调试数据之前删除路径名的某些部分?或者,也许有一些工具可以在编译的二进制文件上执行此操作?

我已经尝试使用 SET(CMAKE_USE_RELATIVE_PATHS ON) (这似乎是开发人员的 frowned upon)选项,但由于我使用的是源外构建,路径名仍然不是以我希望的形式。 IE。它们是 ./../src/mod_foo/foo.c 而不是 mod_foo/foo.c

最佳答案

您可以使用-fdebug-prefix-map标志来重新映射调试信息路径。例如,要使路径相对于构建位置,请使用:-fdebug-prefix-map=/full/build/path=。

关于debugging - 让 gcc 将相对文件名放入调试信息中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9607155/

相关文章:

android - J2V8 和 Stetho

node.js - 在 WebStorm 中使用任意 NodeJS 单元测试框架进行调试

gcc -/usr/bin/ld : cannot find -lauparse

python - Cython、CMake 和 setup.py、python 在子目录中编译两次

c++ - CPack 空 CPACK_PACKAGE_DIRECTORY

c++ - CMAKE 找到包但不链接库

c# - 数据提示(鼠标悬停在 Debug模式下的变量上)在 Visual Studio 2012/Win 7 64 位中不起作用

debugging - 关于如何编写调试格式转换工具的建议

c++11 - 如何使用旧的 ABI 通过 GCC 5 编译 boost?

c++ - 使用 gcc 32 位编译,作为带有 -m64 的 64 位程序