我正在编译的项目使用 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/