【问题标题】:Debugging Howto调试方法
【发布时间】:2009-01-06 21:55:17
【问题描述】:

我是 C 新手,我现在使用的是 MS Visual C++ 6.0。 我目前正在研究排序算法,我想自动跟踪每个变量的值。这可以让我深入了解算法如何进行艰苦的工作。也就是说,我不想在纸上写出什么产生的东西:) 是否有任何用于调试目的的运算符或函数,例如 PHP 中的 var_dump()?或者我怎样才能提高我的调试能力?还有其他适合新手的调试工具吗?或者关于使用 Visual C++ 的内置调试器的任何好的教程? 谢谢!..

【问题讨论】:

  • 你是在做控制台应用还是windows应用?

标签: c debugging visual-c++-6


【解决方案1】:

在 Visual C++ 中,您可以在使用 F9 键编写的代码行上设置断点。您会在该行的左侧看到一个小红点。然后按 F5 编译并运行。

f10 逐行步进。我认为 F11 是一种方法。

如果需要,您还可以对输出窗口进行跟踪输出和调试字符串。

当你设置断点时,你可以在一个窗口中观察变量——我认为堆栈上的变量会自动出现在堆栈/自动变量窗口中。很抱歉,我现在没有 VC6 来提供更多细节或截图。

【讨论】:

    【解决方案2】:

    我认为您正在寻找的东西在 Visual Studio 中被称为“手表”。您可以将表达式(例如变量名称)添加为要监视的项目,并且在您逐步执行代码时,它们的值会自动更新。您可能还对“Locals”调试窗口感兴趣,它类似于 Watches,只不过它填充了当前作用域的本地变量。

    Here is a quick tutorial 关于使用我通过 Google 找到的本地和手表。另请查看有关 best debugging methods 的其他 SO 问题。

    【讨论】:

      【解决方案3】:

      使用 (ALT)(F4) 调出变量窗口 这将显示当前语句的变量。

      使用 (ALT)(F3) 调出监视窗口。您可以在那里添加变量,因此请在它们处于作用域内时对其进行观察。

      查看查看调试窗口下的其他选项。

      【讨论】:

        【解决方案4】:

        printf/fprintf是最容易使用的调试工具。如果您的程序记录其活动,则更容易分析发生的情况。我更喜欢使用可视化调试器进行日志记录,因为它的交互性较低,并且允许分析程序运行后发生的情况。

        PS。最好不要污染标准输出,将调试输出定向到文件或标准错误。

        【讨论】:

        • 这是一个可怕的习惯。我会使用 TRACE 或调试输出到跟踪或调试窗口。
        • 至少用#ifdef debug 或其他东西包装 printf 调用。我对记录到文件没有任何问题,但这不是真正的交互式/及时的。
        • 实际上我在我的代码中使用了自定义调试打印功能,这些功能通常记录到标准错误或文件中,并且可以使用命令行选项启用/禁用。一开始,一个 printf 可能就足够了。
        • 在发布版本中禁用调试输出很重要,蒂姆,但你错过了重点。使用断点和监视窗口无法完成复杂的调试。代码应该设计成打印有用的信息,jetxee 绝对正确。
        猜你喜欢
        • 1970-01-01
        • 2011-04-13
        • 2018-01-25
        • 1970-01-01
        • 2010-10-23
        • 2013-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多