免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1889 | 回复: 6
打印 上一主题 下一主题

linux下gdb调试问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-08 17:00 |只看该作者 |倒序浏览
我将源码分成了两个部分,存储路径为:root/A/src/a.c root/B/src/b.c 其中root为根目录。b.c文件用来编译.so文件供a.c文件中的函数调用

可执行程序的存储路径为 root/A/c.exe

我现在在A目录下运行gdb,想调试写在b.c文件中的函数founction

当我用命令 break ../B/src/b.c:founction时返回错误为:

no source file named break ../B/src/b.c.
Make breakpoint pending on future shared library load? (y or [n])

我选择y以后仍然不能跟进founction函数中

请教高手如何排除该错误?(我的文件路径绝对没有写错!)

论坛徽章:
0
2 [报告]
发表于 2007-11-08 17:19 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2007-11-08 18:40 |只看该作者
谢谢楼上的,不过好像你提供的资料对该问题帮助不大。
有没有高手能指点一下菜鸟?不胜感激!!!

论坛徽章:
0
4 [报告]
发表于 2007-11-09 09:50 |只看该作者
你贴的信息有错误,描述不清,我只能给你提供资料,你的问题很基本,先好好学一下GCC/GDB,什么是编译?什么是链接?什么是调试?先做什么后做什么?还有GCC/GDB的命令选项,命令格式,调试对象控制.......
另外c.exe 这是windows的。

[ 本帖最后由 fuqiang_huang 于 2007-11-9 10:33 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-11-09 18:35 |只看该作者
谢谢楼上的指正,现重新描述如下:

我将源码分成了两个部分

一个存储路径为:root/A/src/a.c
另一个存储路径为:root/B/src/b.c

可执行程序的存储路径为 root/A/excute

注:已将b.c文件编译成“.so”文件,存储在root/A/lib中供调用



我现在想在A目录下运行gdb来调试写在b.c文件中的函数,假设是func1

调试步骤如下:

运行命令 gdb

运行命令 file excute

运行命令 break ../B/src/b.c:func1

然后时返回错误为:

no source file named break ../B/src/b.c.
Make breakpoint pending on future shared library load? (y or [n])

我选择y以后继续调试但仍然不能跟进func1函数中

请教高手为何不能跟踪进入func1函数?应该怎样做才能正常调试?

论坛徽章:
0
6 [报告]
发表于 2007-11-12 09:09 |只看该作者
顶上来!请高手指教,谢谢!

论坛徽章:
0
7 [报告]
发表于 2007-11-20 13:54 |只看该作者
原帖由 trslaber 于 2007-11-12 09:09 发表
顶上来!请高手指教,谢谢!


源代码搜索路径的问题,可尝试以下办法:

1、设置断点的时候不要用相对路径,试试只提供文件名或者提供绝对路径名。

2、在gdb中使用dir命令添加源代码搜索路径。

[ 本帖最后由 雨丝风片 于 2007-11-20 14:20 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP