编译库,以便GDB自动查找源

时间:2019-07-19 17:59:05

标签: c++ linux cmake gdb

我们正在Linux下使用CMAKE编译一个库,然后默认情况下将其安装在/opt/mylib下,并且其源代码也放置在此文件夹中。

当用户尝试使用GDB进行调试时,GDB不会自动找到库源。

我们如何在不指定任何内容的情况下编译GDB查找源的库?

例如,C ++标准库就是这样工作的。我可以调试应用程序,而不必告诉GDB在哪里可以找到源代码。

注意:这个问题不是关于如何使GDB查找源(我知道如何做到),而是关于如何适应CMakeLists.txt以及编译过程,即不需要手动指定源目录在GDB中。

1 个答案:

答案 0 :(得分:0)

您可能正在寻找-fdebug-prefix-map=old=new GCC标志。

来自manual

  

编译位于旧目录中的文件时,请记录描述它们的调试信息,就像文件位于新目录中一样。这可以用于在调试信息中用安装时路径替换构建时路径。也可以使用来将绝对路径更改为相对路径。新的。这样可以提供可重现的构建,它们与位置无关,但是可能需要一个额外的命令来告诉GDB在哪里可以找到源文件。另请参见-ffile-prefix-map。

如果您想调试未安装的二进制文件,则“可能需要额外的命令”部分适用。调试已安装的二进制文件就可以了(TM)。