码迷,mamicode.com
首页 > 其他好文 > 详细

《软件调试艺术》读后感四

时间:2015-06-06 01:41:06      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:gdb   调试   command   

1、条件断点

      只有符合某种条件时才在断点处停止。类似于监视点的工作方式,每当该变量的值发生变化时,监视点都会中断。条件断点只会在怀疑有问题的代码处当变量呈现该怀疑值时才中断。

设置条件断点:breakbreak-args if (conditon)如:break if (i==700) condition 6999

条件可以是:

1、         相等、逻辑和不想等运算符(<,<=,==,!=、,>,>=,&&,||等)如break 180 if string == null && I < 0

2、         按位和以为运算符等(&,|,^,>>,<<等)如break test.c:34 if(x & y) == 1

3、         算术运算(+,-,*,/,%)如break myfunc if i % (j + 3) != 0

    自己写的函数、或库函数经过链接之后都可以调用,比如在这种环境中,可以用if strlen(mystring) == 0等作为判断,自己写的函数也是一个道理。

    正常断点是无条件操作,而条件断点是有条件操作,条件达到之后才能暂停。

2、断点命令列表

使用commands命令设置命令列表:

Commandsbreakpoint-number

……

commands

……

end

例如:

$gdb Fibonacci

 break Fibonacci

 commands 1

 printf  “Fibonacciwas passed %d.\n”, n

 end

如果觉得输出太冗余,可以使用silent命令,它需要在命令列表的第一个输入,使用GDB更安静地触发断点。

如:

command 1

silent

printf “…….”

end如果命令列表中的最后一个命令是continue。GDB将在完成命令列表中的命令后继续自动执行程序。

3、宏的创建

    如果你的这些命令还会在其它程序中使用,那么你可以使用GDB中的define命令创建宏。

创建宏print-and-go:

define print-and-go=> 长久保存则将其放在.gdbinit文件中。

printf $arg0,arg1

continue

end

这里如果要给它传送参数,则参数之间没有任何的符号。查看宏使用show user命令,可以得到所有的宏列表。

《软件调试艺术》读后感四

标签:gdb   调试   command   

原文地址:http://blog.csdn.net/qianligaoshan/article/details/46384173

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!