2011-12-29 89 views
2

我已经编程了大约5个月。我从C++开始,然后是C,最后是Java。在这段时间里,我从来没有在编译器上使用调试功能,也不知道它的功能。在课堂上,迄今为止我还没有任何关于调试器的知识(Altho类几乎不用C开始,我自己学习了C++和Java)。什么是调试,它有什么作用,并且你经常使用它?调试有什么用途?我一直在调试,但我不明白。任何人都可以正确解释调试功能吗?从我目前了解的情况来看,这是一个可以帮助您查找错误的功能,但我不太明白它的工作原理。调试有帮助吗?

+0

您可以按照您的代码执行一步一步。这对于查找和排除错误很有用。 – Victor 2011-12-29 15:17:11

回答

4

调试本身就是发现和消除错误的过程,没有别的也没有。所以除非你是一个从不犯错误的完美程序员,否则你已经完成了。

A 调试器另一方面,它是一个协助调试的工具。您仍然可以在没有调试器的情况下进行调试,但是使用调试器可以为您提供更多选择以及解决方法。

没有你提的具体情况,你在说哪个调试有关(Visual Studio的一个,或者GDB,或......),我们真的不能告诉你如何使用它,但是,概括地说:

调试器将允许您一次执行一条指令的代码,或一次执行一条指令。它会让你运行你的代码,直到你感兴趣的地方,然后停下来。在代码停止的情况下,您可以检查变量的值以确保事情顺利进行,并且在某些情况下甚至可以修改运行中的事情以测试各种情况。

一些调试不使用调试器技术:

  • 打印插入,在那里你垃圾与打印命令代码,可以让你追踪你的代码的状态在运行时,
  • 代码阅读,你在哪里阅读代码,并试图找到你的意图与实际写的不同的地方
  • 杯子对话,你试图向你的朋友(或一个杯子,或企鹅娃娃)解释你的代码在你的桌子上),并在这个过程中看到你的逻辑出错
  • 二进制缩短搜索,在那里你在一个时间删除您的代码块,看看错误仍然存​​在

等等。

+0

谢谢。这几乎总结了我。我之前已经调试过,但没有该功能本身。 – Bugster 2011-12-29 15:43:33

+2

“杯子对话”我曾经有过这种叫做“专家白痴”技巧的变体。朋友会说,“这在X打击,我不知道为什么。”我会说,“好吧,从头开始。”我会坐下来强迫他们解释一切,好像我是一个完全白痴。很多时候,他们会处于中间状态,停下来,脸红,并说:“没关系。”如果他们说:“哦,它永远不会发生*。”我进入Pit Bull模式并强迫他们捍卫每一个逗号和分号,因为这个“手摇”几乎肯定意味着他们没有真正看过它。 – 2011-12-31 23:52:51

1

调试允许您在代码执行的每个步骤检查变量的值。这是找到愚蠢错误的好方法(等等)。例如,你可能不抓住这个差一错误:

for (int i = 0; i <= 10; i++) 
{ 
    MethodThatShouldExecuteTenTimes(i); 
} 

如果通过与调试代码步骤,你会看到,该方法被调用11次。

0

如果你编写的程序总是第一次工作,你将永远不需要找到错误。

如果程序编译但不起作用,您如何解决出了什么问题?

添加大量的打印语句的工作,但能够进入功能,逐步通过他们,并检查内存存储真的很有帮助。

人们可以说调试就像暴力 - 无聊的最后一个避难所!

但是有时候,我们没有足够的能力来避免这个bug,调试器使得生活SOOOOOO更好。

0

调试是发现没有做你想做它的代码的过程。为了高效完成工作,这是一项非常必要的技能。它可以包含很多东西。包括但不限于:由程序

  • 查看你的程序在网络
  • 传输的消息查看程序的输出产生

    • 阅读日志文件(例如不网页显示和正确行事)
    • 查看异常的堆栈跟踪
    • 使用调试器逐行扫描您的代码,以便您可以在执行期间的特定点处看到变量的值。

    调试器不仅可以用于定位程序中的错误。它可以帮助您理解现有代码的运作方式。您可以在代码中设置断点:一个标记,告诉调试器在该行停止执行。然后从这一点开始,您可以逐行逐句浏览源代码。

    为了更好地使用调试器,我建议您在代码中设置一个断点并逐步完成。然后你会看到我和其他人说的话。您使用的任何开发环境应该有关于如何使用包含的调试器的说明。