gdb:记录一些东西而不是破坏?

D.C*_*.C. 5 unix logging gdb

是否有可能让gdb记录到终端而不是破坏它?例如,我想在某些方法上设置'断点',并且每次调用该方法时都有gdb print self和参数.基本上我想将print语句插入任意位置而不实际重新编译.

谢谢你的任何建议


这是我在这些有用的评论后到目前为止所得到的:

define logFoo
b fooMethod
commands
po self
end
end
Run Code Online (Sandbox Code Playgroud)

但GDB似乎并不喜欢嵌套的end语句.有什么想法吗?

ks1*_*322 11

您可以使用断点命令列表.有一个例子如何做到这一点.

例如,以下是当x为正数时,如何使用断点命令在入口foo处打印x的值.

 break foo if x>0
 commands
 silent
 printf "x is %d\n",x
 cont
 end
Run Code Online (Sandbox Code Playgroud)