南京html5网站建设,四川省建设厅网站证,深圳安卓app开发公司,wordpress主题 国外目录
#x1f440; 1.安装gdb
#x1f440;2.判断是否安装成功
#x1f440;3.改成debug方式发布。
#x1f440; 4.gdb功能简介 前言 gdb是Linux 下功能全面的调试工具。gdb支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调试手段。在Linux环境软件…
目录 1.安装gdb
2.判断是否安装成功
3.改成debug方式发布。 4.gdb功能简介 前言 gdb是Linux 下功能全面的调试工具。gdb支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调试手段。在Linux环境软件开发中gdb 是主要的调试工具用来调试 C 和 C 程序。 1.安装gdb 直接在命令行输入sudo yum install -y gdb
即可直接安装成功。 2.判断是否安装成功 安装成功后在命令行直接输入 gdb 或者 gdb --version 进入交互模式。
如图所示 当我们进入交互模式后发现无论我们输入什么命令都没有作用无法调试只会出现这样的情况
/home/bsk/test1/one/test.c: not in executable format: File format not recognized
(gdb) l
No symbol table is loaded. Use the file command.哪为什么会这样呢原因很简单因为gdb在linux中默认是以release版一般软件进行发布用户体验模式的方式来进行发布的不可以被调试所以我们要把它改成debug方式包含调试信息发布。 3.改成debug方式发布。 在命令行输入vim Makefile自动化构建工具多文件操作
进入之后写如下代码其中的 -g选项就是把其改成debug方式。 1 mytest:test.c2 gcc $^ -o $ -g3 4 .PHONY:clean5 clean:6 rm -f mytest7
现在再make一下就会生成对应的mytestdebug版
以上是详细内容方便从根上理解。
而我们在日常使用时直接在 gcc命令下添加 -g 选项即可再直接gdb就可。如下图所示 4.gdb功能简介 接下来就可以进行gdb使用了简单介绍其几个功能如下 l显示代码l数字可以从你输入的数字开始显示但会出现和其相关的上下文
(gdb) l
1 #include stdio.h
2 int main()
3 {
4 printf(long time no see\n);
5 fflush(stdout);
6 sleep(2);
7 return 0;
8 }
(gdb) b行号打断点
(gdb) b 5
Breakpoint 1 at 0x40060b: file test.c, line 5.
(gdb) info b 查看断点编号信息如下所示
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x000000000040060b in main at test.c:5breakpoint already hit 1 time
2 breakpoint keep y 0x0000000000400601 in main at test.c:2
(gdb) d编号删除断点不要输入以前打断点的行号要输入查看断点信息里面的对应的Num号
(gdb) d 1
(gdb) info b
Num Type Disp Enb Address What
2 breakpoint keep y 0x0000000000400601 in main at test.c:2
(gdb) r 运行程序遇到断点会停下来没有断点直接运行到最后
(gdb) r
Starting program: /home/bsk/test1/one/a.out
long time no seeBreakpoint 1, main () at test.c:5
5 fflush(stdout);
Missing separate debuginfos, use: debuginfo-install glibc-2.17-317.el7.x86_64
(gdb)
在第5行停了下来。最后一行提示缺少一个工具复制安装就可以或者不用管 n单步执行语句对应vs逐过程不进入函数内部
(gdb) n
6 sleep(2);
(gdb) finish 结束函数调用然后停下来。 s进入函数内部对应vs逐语句 until 行数跳转到指定行 display 名称常显示对应vs中的监视 undisplay 编号取消常显示监视