老生常谈了,关于linux的gdb的情况,但是呢,我最近在工作中从事工作其中一项就是开发linux下的命令行,大部门的调试工作也是需要依靠gdb的帮助,这次文章就主要讲讲关于gdb的一些使用情况!
1.GCC的全过程只要了解了c语言编译的全过程,才有可能去真正搞懂gdb的底层原理。
先给大家贴出来gcc的一些编译选项
- 写好的C语言文件会经过预处理,进行宏替换,注释删减,头文件的添加等一系列 *** 作
- 紧接着预处理文件(.i)文件会经过编译,行为汇编文件
- 然后汇编文件经过汇编器生成可执行的二进制文件
- 最后,进过链接器把所有把可执行的二进制文件还有动态库,静态库链接起来,生成最后的可运行文件(如果想要搞明白在里面的本文不做过多的阐述,可查看程序员的自我修养这本书,专门详细的介绍了这些部分)
当然我们得先开始从生成可调式的文件说起,需要通过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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)