当前位置:  技术问答>linux和unix

GDB 的 s 单步命令 怎么改回不进入标准库函数。

    来源: 互联网  发布时间:2017-05-29

    本文导语:  本帖最后由 jiaga 于 2014-09-13 23:13:42 编辑 debian 7.6 系统  今天用 apt-get install 安装了几个东东  电脑自己下载了很多东西。 然后 GDB 调试代码的时候用 s 命令遇到每个标准库函数都要进去 想这样: 11      #inc...

本帖最后由 jiaga 于 2014-09-13 23:13:42 编辑
debian 7.6 系统 
今天用 apt-get install 安装了几个东东  电脑自己下载了很多东西。
然后 GDB 调试代码的时候用 s 命令遇到每个标准库函数都要进去
想这样:
11      #include 
12
13      int main(void)
14      {
15              printf("hello world!n");
(gdb) l
16
17              return 0;
18      }
(gdb) b main
Breakpoint 1 at 0x400510: file test.c, line 15.
(gdb) r
Starting program: /home/jiaga/c/linked_list/void_list/test
s
Breakpoint 1, main () at test.c:15
15              printf("hello world!n");
(gdb) s
_IO_puts (str=0x4005dc "hello world!") at ioputs.c:35
35      ioputs.c: 没有那个文件或目录.
(gdb) s
37      in ioputs.c
(gdb) s
__strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:26
26      ../sysdeps/x86_64/multiarch/../strlen.S: 没有那个文件或目录.
(gdb)


弄得我操作好不自在。
只要是标准库它就要源码,我木有啊。。。 而且我也不想调试标准库啊!!

以前 s 命令都是直接跳过了标准库函数的啊!!
像这样:
15              printf("hello world!n");
(gdb) s
hello world!
17              return 0;
(gdb)


用 s 命令然后标准库函数就直接执行了啊, 都没有要进去,就直接跳自己的代码上了啊?

为什么呢??? 现在调试很麻烦了啊,刚看了几行代码又要碰到标准库函数进去    要么就要看准是标准库函数的时候用 n 命令跳过。之前习惯了一路 s 命令走下去的,现在很不习惯啊!!!
怎么改回来呢???

|
猜测楼主可能最近无意下载了glibc的debug文件 到了debug file directory

gdb 的step的实现只是简单的看当前地址是否有source line的信息
所以如果不想跳入glibc的function只需要保证gdb看不到glibc的debug info

闲话少叙, 直接上个例子

(gdb) b main
Breakpoint 1 at 0x400520: file b.C, line 5.
(gdb) r
Starting program: b

Breakpoint 1, main () at b.C:5
5         printf("hello worldn");
(gdb) step
_IO_puts (str=0x4005e4 "hello world") at ioputs.c:35
35      ioputs.c: No such file or directory.
(gdb) show debug-file-directory
The directory where separate debug symbols are searched for is "/usr/lib/debug".
(gdb) set debug-file-directory
(gdb) show debug-file-directory
The directory where separate debug symbols are searched for is "".
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: b

Breakpoint 1, main () at b.C:5
5         printf("hello worldn");
(gdb) step
hello world
7         return 0;
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: b

Breakpoint 1, main () at b.C:5
5         printf("hello worldn");
(gdb) next
hello world
7         return 0;

如果只是简单想跳过printf,除了改变debug file directory, 也可以直接用 next,如上所示

预知详情,可参考 https://blogs.oracle.com/dbx/entry/gnu_debuglink_or_debugging_system

    
 
 

您可能感兴趣的文章:

  • gdb调试时如何进入类成员函数和模板类成员函数?谢谢
  • 如何让 gdb 知道多个文中件的函数 ?
  • [gdb]调用函数时,光显示返回值,并不输出结果。。。
  • GDB中,我有info func,怎么才能列出所有函数?
  • gdb 如何调试带参数的main函数
  • GDB调试能进入inline函数吗?
  • gdb调试时遇到库函数有SIGSEGV错误
  • gdb怎么进入其他文件中的函数调试
  • GDB调试的时候用step想跳到其他函数里提示no such file
  • GDB为什么进不了另外一个文件的函数?
  • gdb单步调试时如何跳到子函数中去?
  • GDB调试C++程序时如何使程序在运算符重载函数处停止
  • 使用gdb调试软件,如何进入所调用函数的内部(在另一个源文件内)
  • gdb调试如何跟踪进入另外一个包含文件的内部函数进行调试?
  • gdb 调试运行进程 堆栈中的函数名为问号
  • 我输入了“step”,gdb不会进入函数内部去调试
  • read函数及gdb 调试问题
  • gdb 如何调试带命令行参数的程序 如 gdb a.out arg1,arg2
  • gdb调试时命令行参数如何输入?比如main(int argc,char **argv)中,我要把一个filename作为argv[1]传入给gdb调试
  • gdb的start命令不能用?求解
  • 请教 make gdb-6.4 出现 make[4]: Entering directory `/tmp/gdb-6.4/gdb/doc' iis7站长之家
  • 与GDB的commands命令有关
  • gdb调试问题,关于list命令的
  • gdb是什么命令跳到下一个断点
  • gdb下的watch命令没有作用,求助
  • gdb调试时next命令为什么不走return语句?
  • linux gdb 没有符号表被读取。请使用 "file" 命令。
  • gdb调试出现奇怪问题 , 怎么老围着 init.c 转? list , break 命令失效?!
  • GDB调试中遇到的问题: 用list命令不能列出源代码? 提示信息: 符号表不被装载。使用"文件" 命令 ???
  • [gdb]print命令的结果怎么用省略号代替了。。。。
  • gdb中define命令如何永久有效
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下gdb如何追踪进入子进程??急急7777777777777
  • Linux下gdb如何追踪进入子进程??-----〉有没有类似dbx的追踪功能
  • 如何使用linux下gdb来调试python程序
  • 使用gcc gdb的大牛进来说说gdb的强大之处在哪。我刚学linux了,vim我确实体会到了其强大之处。而对gcc gdb,体会不到gdb这工具的强大之处。
  • 请教 make gdb-6.4 出现 make[4]: Entering directory `/tmp/gdb-6.4/gdb/doc'
  • GDB调试 GDB挂了。。。
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • linux gdb: 我在一台机器上编译的程序用GDB可以调试,把程序放到另外一台机器上调试,调试信息就没有了 这是什么原因呢?
  • 写调试器(像gdb)的一般思路是什么
  • gdb 使用问题请教
  • gdb的问题,请教,会者不难,快来拿分
  • gdb调试动态链接库
  • 在rh9上无法使用gdb是怎么回事呢
  • gdb高手请指教
  • gdb如何进行调试?
  • 请问,有人研究过gdb-insight源码吗?
  • 在linux下除了gdb外还有没其他好用的调试器?
  • gdb调试
  • 如何编译gdb
  • 怎样在windows中编译生成gdb
  • gdb调试时的文件格式问题
  • gdb升级的问题
  • gdb 怎么调试socket程序


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3