我正在寻找一种方法,当gdb中出现一个特定的断点时,可以采取一些行动.
基本上我的程序里有一些记忆缺陷.当malloc和free函数命中时,我需要进入函数(步骤)并收集一些基本信息,如地址和大小(基本上打印这些值).一旦完成,继续我的程序.
我们有什么好办法吗?
我正在寻找一种方法,当gdb中出现一个特定的断点时,可以采取一些行动.
基本上我的程序里有一些记忆缺陷.当malloc和free函数命中时,我需要进入函数(步骤)并收集一些基本信息,如地址和大小(基本上打印这些值).一旦完成,继续我的程序.
我们有什么好办法吗?
例如,下面介绍了如何使用断点命令在x为正数时将x的入口值打印到foo.
break foo if x>0
commands
silent
printf "x is %d\n",x
cont
end
如果在命令列表中指定的第一个命令是silent
,则不会打印关于在断点处停止的常见消息.对于要打印特定消息然后继续的断点,这可能是可取的.如果剩下的命令都没有打印任何内容,那么就看不到到达断点的迹象.只有在断点命令列表的开头,"静默"才有意义.
断点命令的一个应用程序是补偿一个bug,以便测试另一个bug.在错误的代码行后面放一个断点,给它一个条件来检测出错的情况,并给它命令来为任何需要它们的变量分配正确的值.以continue命令结束,这样程序就不会停止,以silent命令开始,这样就不会产生输出.下面是一个例子:
break 403
commands
silent
set x = y + 4
cont
end