You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否编译带调试符号的C++共享库?如何调试库内源码?

调试带符号共享库的方法

1. 你的编译方式是正确的

你当前的编译命令已经带了-g参数,生成的libtest.so本身已经包含完整调试符号,不需要额外修改编译流程。

2. 前置准备:准备调用共享库的可执行文件

共享库无法直接运行,你需要先写一个调用libtest.so中导出函数的测试可执行文件,比如main.cpp,编译命令如下:

g++ -g main.cpp -o main -L. -ltest

运行前需要把当前目录加入动态库搜索路径,避免运行时找不到共享库:

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

3. 启动gdb调试

直接用gdb启动测试可执行文件即可:

gdb ./main

调试库内代码和调试普通可执行代码逻辑完全一致,常用操作包括:

  • 给库内函数打断点:b 函数名,如果gdb提示断点待加载,输入y确认即可,共享库加载后断点会自动生效
  • 给库内源码指定行打断点:b test.cpp:行号
  • 断点触发后,正常用step、next、print等常规gdb命令即可跟踪库内代码执行逻辑

常见问题排查

如果加了-g参数仍然看不到库内源码,可以用gdb的dir命令手动添加源码所在目录到搜索路径:

dir 你的源码所在目录的绝对路径

内容的提问来源于stack exchange,提问作者calvinhobbes123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 00:24:03