【问题标题】:Debugging big input in eclipse在eclipse中调试大输入
【发布时间】:2016-04-04 16:46:04
【问题描述】:

不幸的是,我用 C++ 编写的程序有一个错误(或多个错误),但我无法推断出它是什么,因为只有一个输出行与预期的输出不匹配(输入文件有 3K 行输入) .我知道哪个输入行有问题,但输入文件中有超过 2K 行,因此手动调试效率不是很高。
有没有办法让调试器在前 2K 行“单独”运行并在尝试执行有问题的输入行之前完全停止?我使用 Windows 和 eclipse,但不介意切换 IDE 或在必要时切换到 Linux。
提前致谢!

【问题讨论】:

  • 你能在你的程序中添加一些特定的代码来检测输入并停止调试器吗?即一个 if 语句,当满足时,它会要求调试器中断。在 Windows 中,我曾经使用 'asm int 3' 或 DebugBreak() api。

标签: c++ eclipse debugging


【解决方案1】:

不要重新发明轮子!

Eclipse 具有强大的断点功能Enable condition

  • 在代码中设置断点
  • 右键单击断点-“断点属性”
  • 勾选“有条件”
  • 在应停止断点时编写条件(您可以访问范围和全局变量)

这里是 Eclipse 帮助页面。 Breakpoint Enable Condition (screenshot)

【讨论】:

    【解决方案2】:

    好吧,eclipse可能有高级调试功能,说实话我不知道关于eclipse的第一件事,但是FWIW你可以很容易地模拟你想要的。

    你拥有的是:

    for(i = 0; i < lineCount; ++i)
       process one line
    

    添加条件检查行号并在其中放置断点!:

    for(i = 0; i < lineCount; ++i)
       if(i == 2000)
       {
           int x = i*i; //random line, just add your breakpoint here!
       }
       process one line
    

    【讨论】:

    • 可能需要关闭优化以保留“int x =”行。
    【解决方案3】:

    由于您确切知道哪一行有问题,因此只需一个虚拟的 if 语句即可检查该行的内容,如果计算出您的问题行,则什么也不做 - 并在该行放置一个断点。

    【讨论】:

      猜你喜欢
      • 2014-09-30
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 2011-11-02
      • 2011-05-30
      • 2016-05-23
      相关资源
      最近更新 更多