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

时间:2010-11-27 03:03:20

标签: c debugging gdb

我希望在函数中打印变量(称为 每次调用函数时都要打印多次。

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

类似......

void func()
{ 
    if( t == 0 ) 
       x = z+1;
    else
       x = p+2; 
} 

我希望在t == 0时打印变量 并忽略其他..

3 个答案:

答案 0 :(得分:6)

这可以通过命令breakpointconditioncommands的组合来完成。

  1. 使用breakpoint func
  2. 设置断点
  3. condition t == 0
  4. 为条件
  5. 使断点打印局部变量:
  6. 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行中断。然后你可以打印你想要的任何值(或继续,直到下次满足条件)