我正在寻找一种在 gdb 中遇到特定断点时执行某些操作的方法。
基本上我的程序中有一些内存泄漏。当 malloc 和 free 函数命中时,我需要进入函数(步骤)并收集一些基本信息,如地址和大小(基本上打印那里的值)。完成后恢复我的程序。
我们有什么好的方法可以做到这一点吗?
最佳答案
例如,这里是您可以如何使用断点命令在 x 为正时在 foo 的入口处打印 x 的值。
break foo if x>0
commands
silent
printf "x is %d\n",x
cont
end
如果您在命令列表中指定的第一个命令是silent
,则不会打印关于在断点处停止的通常消息。这对于要打印特定消息然后继续的断点可能是理想的。如果其余命令均未打印任何内容,则您看不到已到达断点的迹象。 silent 仅在断点命令列表的开头才有意义。
断点命令的一个应用是补偿一个错误,以便您可以测试另一个错误。在错误的代码行之后放置一个断点,给它一个条件来检测发生错误的情况,并给它命令为需要它们的任何变量分配正确的值。以 continue 命令结束,这样您的程序就不会停止,并以 silent 命令开始,这样就不会产生任何输出。这是一个例子:
break 403
commands
silent
set x = y + 4
cont
end
关于c - GDB中遇到某个断点时如何执行特定操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6517423/