Linux下gdb调试的基本详情

Linux下gdb调试的基本详情,第1张

Linux下gdb调试的基本详情

        老生常谈了,关于linux的gdb的情况,但是呢,我最近在工作中从事工作其中一项就是开发linux下的命令行,大部门的调试工作也是需要依靠gdb的帮助,这次文章就主要讲讲关于gdb的一些使用情况!

1.GCC的全过程

只要了解了c语言编译的全过程,才有可能去真正搞懂gdb的底层原理。

先给大家贴出来gcc的一些编译选项

        

GCC编译选项说明-E预处理指定的源文件,不进行编译-S编译指定的源文件,但是不进行汇编-c编译、汇编指定的源文件,但是不进行链接-o [file1] [file2] / [file2] -o [file1]将文件file2 编译成可执行文件file1-I  directory指定include 包含文件的搜索目录-g在编译的时候,生成调试信息,该程序可以被调试器调试-D在程序编译的时候,指定一个宏-w不生成任何警告信息 -Wall生成所有警告信息-Onn的取值范围:0~3。编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高-l在程序编译的时候,指定使用的库-L指定编译的时候,搜索的库的路径。-fPIC/fpic生成与位置无关的代码-shared生成共享目标文件,通常用在建立共享库时-std指定C方言,如:-std=c99,gcc默认的方言是GNU C
  1. 写好的C语言文件会经过预处理,进行宏替换,注释删减,头文件的添加等一系列 *** 作
  2. 紧接着预处理文件(.i)文件会经过编译,行为汇编文件
  3. 然后汇编文件经过汇编器生成可执行的二进制文件
  4. 最后,进过链接器把所有把可执行的二进制文件还有动态库,静态库链接起来,生成最后的可运行文件(如果想要搞明白在里面的本文不做过多的阐述,可查看程序员的自我修养这本书,专门详细的介绍了这些部分)
2.GDB的常用命令手段(也可应对面试)

        当然我们得先开始从生成可调式的文件说起,需要通过gcc -c -g -o生成可调式文件

1.GDB启动    gdb  调试文件.C

2.查看代码     list(l)   使用方法:list  函数名/行号

3.设置断点     break  使用方法:break 函数名/行号

4.查看设置断点  info break

5.开始执行    

                单步  start(s)   从第一行开始执行

                多不  run         从第一个断点开始执行

6.查看变量  print   变量名

7.查看变量类型 ptype  变量名

8.设置追踪变量(就是对一个变量自动打印,只要有变化值)display 变量名

9. 跳出循环     until

多进程下的调试

1.设置调试父进程还是子进程  set follow-fork-mode  [parent | child]   

2. 设置调试模式       set  detach-on-fork [on | off]  

3.查看调试的进程(这不进行查看的进程可以查出编号的)     info  inferiors   

4.切换进程               infoior   编号

5.是某个进程脱离GDB调试,也就是不关心他的运行  detach inferios id

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5694044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存