如何用gdb调试共享库(.so),主要是如何设置断点

freefalcon 2004-09-06 02:51:39
假设我的可执行程序是A,共享库为B.so
我用gdb调试A,想在B的某个源文件(比如C.cpp,C.cpp与A不在同一个目录下)中设置断点,使用下面的命令行
break C.cpp:123
提示说“No source file named C.cpp”
我尝试用下面各种方法设置C.cpp的路径也不行:
1. 使用gdb的-d参数
2. 使用gdb的dir命令
3. 设置PATH环境变量

如果我用gdb调试B.so,即
gdb B.so
则设置断点是可以的,但光是一个so没法运行,那我该怎么做呢?
...全文
2304 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
freefalcon 2004-09-08
  • 打赏
  • 举报
回复 1
问题已经解决

先break main, 然后run,使.so加载
然后再对共享库进行break设置
freefalcon 2004-09-07
  • 打赏
  • 举报
回复
有没有人实际做过?

1. .so和可执行程序都用-ggdb3生成了调试信息
2. 我前面已经提到了我使用过dir(directory)命令,而且-d参数等都试过了
3. 我也在google上搜索了,没有找到这方面的资料
4. 谢谢各位,欢迎大家帮忙up
wangdaobang 2004-09-07
  • 打赏
  • 举报
回复
有make信息么
freefalcon 2004-09-07
  • 打赏
  • 举报
回复
清早起来第一件事就是——up
step_by_step 2004-09-07
  • 打赏
  • 举报
回复
当然可以调试了
如果你的.so的源文件路径在/so下面
那你你首先需要
$gdb main

$directory /so

记住用directory目录
大雾 2004-09-07
  • 打赏
  • 举报
回复
能不能用load命令将代码装入?
l sourcefile试试
freefalcon 2004-09-07
  • 打赏
  • 举报
回复
再up
starstargao 2004-09-06
  • 打赏
  • 举报
回复
关注
freefalcon 2004-09-06
  • 打赏
  • 举报
回复
:),3ks
foolfei 2004-09-06
  • 打赏
  • 举报
回复

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧