编译库,以便 GDB 自动查找源
Compile library such that GDB finds sources automatically
我们正在Linux下使用CMAKE编译一个库,然后在/opt/mylib
下默认安装该库,其源代码也放在此文件夹中。
当用户尝试使用 GDB 进行调试时,GDB 不会自动找到库源。
我们如何编译 GDB 在不指定任何内容的情况下查找源的库?
例如,C++标准库就是这样工作的。我可以调试应用程序,而不必告诉GDB在哪里可以找到源代码。
注意:这个问题不是关于如何让 GDB 找到源(我知道怎么做(,而是如何适应不需要在 GDB 中手动指定源目录的CMakeLists.txt
和编译过程。
您可能正在寻找-fdebug-prefix-map=old=new
GCC标志。
从手册:
编译驻留在旧目录中的文件时,请记录描述它们的调试信息,就好像文件驻留在新目录中一样。这可用于将生成时路径替换为调试信息中的安装时路径。它还可用于通过使用 将绝对路径更改为相对路径。为新的。这可以提供更多可重现的构建,这些构建与位置无关,但可能需要额外的命令来告诉 GDB 在哪里可以找到源文件。另请参阅 -ffile-prefix-map。
如果要调试构建二进制文件而不安装它们,则"可能需要额外的命令"部分适用。调试已安装的二进制文件将正常工作 (TM(。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 模板元程序查找相似的连续类型名称
- 当在带有Eigen的C++中使用GDB时,我如何才能看到更多的大矩阵
- 在UNIX系统中使用DIR查找文件的字节大小
- 如何找出GDB的SIGTRAP核心转储的根本原因
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- gdb-查找strncmp()函数的值
- GDB:在转储的整个内存中查找值
- GDB 如何查找函数退出的位置
- 编译库,以便 GDB 自动查找源
- 在GDB中查找列表术语的位置
- 使用GDB查找函数对应的内存地址/调试
- 在 gdb 中查找指向地址的所有变量
- 在 GDB 中调试多线程服务器 - 查找每个线程的状态.执行时继续并停止
- 在GDB(C++)中查找指向单例死后的指针
- 如何使用GDB来查找内存地址对应的函数
- 如何使用 gdb 查找全局变量的析构函数调用?