用gdb调试程序(二)

变量的追踪

 

struct people{

    int age;

    int num;

};

 

struct people * you;

 

调试程序时,总是想观察某个数据的值,使用print可以输出某个变量的值,当然,你也可以输出某个结构体的值,前提是你有一个指向该结构体的指针p。如

 

使用print/p

则,只要在合适的断点处,使用下面的命令,就可以输出这个结构体的所有成员的值。

(gdb)p *you

$1 = { age = 4, num = 5}

假设有一个数组int a[10],使用命令

(gdb)p a

$1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

当时如果这个数组是动态创建的,如int  *a = (int *)malloc(10 * sizeof(int));,则会有不同

(gdb)p a

使用上面的命令只会输出数组中的第一个元素,为了输出整个输出,可以使用下面的命令

(gdb)p *a@10

 

使用display/p

另外一个有用的输出命令是display/disp,这个命令会在每一次程序中断执行时,输出某个变量的值。遇见断点,单步调试等,只要中断一次,就输出一次,这样就省的每次都输入命令。

 

使用commandsl

使用commands命令,你可以做更多,你可以输入一串命令,做你想做的很多事。不光可以输入gdb命令,还可以使用call命令,调用代码中的某个函数。假设,你有一个队列输出函数printqueue(queue ),你可以如下,在某个断点处调用这个函数。

 

(gdb)commands identifier

Type commands for when breakpoint 1 is hit, one per line.
End with a line saying just "end".
>call printqueue(queue);

>end

这样,每当到达identifier标定的断点,都会调用函数printqueue。如果想取消这个函数调用,只需使用如下命令

(gdb)commands identifier

Type commands for when breakpoint 1 is hit, one per line.
End with a line saying just "end".
>end

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值