GDB 带参调试笔记

来源:互联网 发布:js中string的方法 编辑:程序博客网 时间:2024/06/10 13:12

最初学GDB调试时是参考皓哥的BLOG里做的:http://blog.csdn.net/haoel/article/details/2879

开发调试过程中,陆陆续续接触到一些新的调试场景,记录如下:

/*GDB测试*/#include <stdio.h>#include <stdlib.h>#include <string.h>struct Person{    int  Height;    int  age;};int main(int argc,char **argv){      struct Person s_body;      memset(&s_body,0,sizeof(s_body));    s_body.Height = atoi(argv[1]);    s_body.age    = atoi(argv[2]);    printf("身高:%d\n",s_body.Height);    printf("年龄:%s\n",s_body.age);     return 0;    }

代码编译:gcc -g gdbtst.c
使用GDB 进行调试:

gdb  a.out(gdb)break 11                 //设置断点位置在11行(gdb)set args  170 65         //设置程序运行时的命令行参数(gdb)r                        //运行程序

结果出现了错误
Program received signal SIGSEGV, Segmentation fault.
0x00000033f0e480ac in vfprintf () from /lib64/libc.so.6
直接输入

(gdb)where 

可以看出错误产生的地方。但是在调试过程中经常遇到一些结构体显示错乱的问题,查看起来比较消耗查克拉,所以查了一下发现GDB有很多关于显示的设置,如

(gdb)set print pretty on

然后在 p 结构体就可以比较好的显示出成员变量的值了。

0 0
原创粉丝点击