如何在gdb中的特定条件下打印变量?

Onk*_*jan 5 c debugging gdb

我想在每次调用函数时打印一个函数(多次调用)中的变量.

是否可以通过gdb自动执行此操作?有条件的印刷......

就像是 ..

void func()
{ 
    if( t == 0 ) 
       x = z+1;
    else
       x = p+2; 
} 
Run Code Online (Sandbox Code Playgroud)

我希望在t == 0时打印变量,否则忽略..

wno*_*ise 6

这可以用命令的组合来完成breakpoint,conditioncommands.

  1. 设置断点 breakpoint func
  2. 让它成为条件 condition t == 0
  3. 使断点打印局部变量:

.

commands  
info locals  
end  
Run Code Online (Sandbox Code Playgroud)

或具体变量:

commands  
print t
print z
print x  
end  
Run Code Online (Sandbox Code Playgroud)


wli*_*iao 3

在 line 处断点x=z+1,使用 'command [breakpoint number]打印变量并继续。

这是可行的,因为代码中有分支。

如果没有 if-else 分支。您还可以使用“break if condition”并执行命令操作。