【发布时间】:2012-03-25 07:34:58
【问题描述】:
我正在编译的项目使用 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。
【问题讨论】:
-
./../src/mod_foo/foo.c是一个相对路径... -
是的,但与 项目根目录 无关(位于
./../src) -
您的 CMake 有问题,而不是 gcc。 GCC 将其作为命令行参数放入
.debug_str。 -
我并不真正关心方法。我看到了三种理论上可行的方法,其中任何一种对我来说都很好: 1)使 CMake 将目录更改为项目根目录并传递 gcc 相对于项目根目录的源文件名; 2) 改变这个 GCC 行为,所以它会在写入之前破坏文件名; 3)用一些工具修补编译的二进制文件,以修复文件名。问题是,我不知道该怎么做。
标签: debugging gcc cmake debug-symbols