我希望在函数中打印变量(称为 每次调用函数时都要打印多次。
是否可以通过gdb自动执行此操作?某物 像有条件的印刷......
类似......
void func()
{
if( t == 0 )
x = z+1;
else
x = p+2;
}
我希望在t == 0时打印变量 并忽略其他..
答案 0 :(得分:6)
这可以通过命令breakpoint
,condition
和commands
的组合来完成。
breakpoint func
condition t == 0
commands
info locals
end
或具有以下特定变量:
commands
print t
print z
print x
end
答案 1 :(得分:3)
在第x=z+1
行设置断点,使用“command [breakpoint number]
打印变量并继续。
这很有效,因为你在代码中有分支。
如果没有if-else分支。 你也可以使用'break if condition'来做命令。
答案 2 :(得分:0)
你实际上可以在某个条件下打破特定的地方。
e.g。 break sourcefile.c:123 if x + y -foo(z)== 4.如果该表达式的计算结果为true,则会在sourcefile.c的第123行中断。然后你可以打印你想要的任何值(或继续,直到下次满足条件)