gdb调试的时候,如何不进入标准库函数?

mwhybmj 2016-11-27 11:55:29
除了用n命令。
我看网上有人说输入 set debug-file-directory,难道每次调试的时候都要输入一遍这个命令吗?
还有这个命令到底是什么意思? 重置debug文件的目录吗?
附上原贴地址:http://bbs.csdn.net/topics/390885050
...全文
1007 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
LubinLew 2016-12-01
  • 打赏
  • 举报
回复
.S就是汇编. get_max ( strlen(ar));对于这个写法,必定是先执行strlen函数, 进strlen函数,上面说过了 finish命令直接结束这个函数就OK,下一步就进到get_max了
mwhybmj 2016-11-29
  • 打赏
  • 举报
回复
引用 1 楼 lgbxyz 的回复:
gdb下一步是n 或者 s, n是执行一行,不管是不是函数,是函数就直接执行完函数. s是执行一行,如果是函数,就进入函数内部. 通常调试都是n,如果要进入你需要调试的函数再用s. 如果进错了就敲finish命令会执行到这个函数结束. 设置源文件命令是dir,如果你把源文件放在/usr/src/下,那么在gdb的命令行敲 dir /usr/src , 注意这个命令不能搜索到子文件夹. 另外, 没有特殊需要你调试库函数干什么,库函数都是各种优化过的,有很多汇编的部分.
比如像这种时候:假如get_max (int a)是个函数。 那像这样的 get_max ( strlen(ar)); 如果想进入函数内部,s的时候就会调到库函数(strlen)啊。 而且我试了在gdb下输入dir加路径。。可是试了一下 ../sysdeps/x86_64/strlen.S: 没有那个文件或目录.
LubinLew 2016-11-28
  • 打赏
  • 举报
回复
gdb下一步是n 或者 s, n是执行一行,不管是不是函数,是函数就直接执行完函数. s是执行一行,如果是函数,就进入函数内部. 通常调试都是n,如果要进入你需要调试的函数再用s. 如果进错了就敲finish命令会执行到这个函数结束. 设置源文件命令是dir,如果你把源文件放在/usr/src/下,那么在gdb的命令行敲 dir /usr/src , 注意这个命令不能搜索到子文件夹. 另外, 没有特殊需要你调试库函数干什么,库函数都是各种优化过的,有很多汇编的部分.

23,217

社区成员

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

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