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

Compile library such that GDB finds sources automatically

本文关键字:查找 GDB 以便 编译      更新时间:2023-10-16

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

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

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

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

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

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

从手册:

编译驻留在

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

如果要调试构建二进制文件而不安装它们,则"可能需要额外的命令"部分适用。调试已安装的二进制文件将正常工作 (TM(。