当特定断点命中在gdb中时,执行特定操作

我正在寻找一种方法来做一些行动,当一个特定的断点点击在gdb。

基本上我有一些memleak在我的程序。当malloc和自由函数命中时,我需要进入函数(步骤)并收集一些基本信息,如addr和size(基本上打印有值)。一旦完成恢复我的程序。

我们有什么好的方法吗?

最佳答案
例如,下面是当x为正时,如何使用断点命令打印进入foo时x的值。

break foo if x>0
commands
silent
printf "x is %d\n",x
cont
end

如果在命令列表中指定的第一个命令是无声的,则不会打印关于在断点处停止的常见消息。这对于打印特定消息然后继续的断点可能是理想的。如果没有其他命令打印任何内容,您将看不到到达断点的迹象。 silent仅在断点命令列表的开头有意义。

断点命令的一个应用是补偿一个错误,所以你可以测试另一个。把一个断点放在错误的代码行之后,给它一个条件来检测已经做错误的情况,并给它一个命令给任何需要的变量赋值。以continue命令结束,以便程序不停止,并以silent命令开始,以便不产生输出。这里是一个例子:

break 403
commands
silent
set x = y + 4
cont
end

转载注明原文:当特定断点命中在gdb中时,执行特定操作 - 代码日志