【问题标题】:need help with conditional gdb debugging (of C code)在条件 gdb 调试(C 代码)方面需要帮助
【发布时间】:2010-02-21 01:49:21
【问题描述】:

我有一个类似的 C 代码:

int f() {
   for (int i = 0; i < 100; i++) {
   scanf flag;
   if(flag) 
      scanf data1;
   scanf data2;
   }
}

我只想在flag == 0 时中断执行。我应该如何设置断点(使用 gdb)?

【问题讨论】:

    标签: c debugging gdb


    【解决方案1】:

    在 gdb 控制台输入

    b (some_line) if flag == 0
    

    编辑:
    如果您在 some-line 停止时无法 print flag,那么:
    - (A) 您的代码经过优化编译(可能),或者
    - (B) 你的编译器有问题

    如果是 (A),则在 -g3 之外添加 -O0

    如果你可以print flag,那么你有一个错误版本的GDB。尝试升级到当前的 7.0.1 版本。

    【讨论】:

    • 是的,我已经尝试过了...我收到了Error in re-setting breakpoint 17: No symbol flag in current context.
    • @dksjalk 你用调试信息编译了吗? gcc -g myfile.c
    • @dksjalk: 或者更好——gcc -g3
    • 是的,我用调试信息编译(虽然使用 Eclipse),但我不确定调试信息是否存在。有什么方法可以检查吗?
    • @dksjalk 如果没有调试信息,您得到的错误正是您得到的错误。
    猜你喜欢
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 2013-02-23
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2011-02-13
    相关资源
    最近更新 更多