为什么在IDE中调试更好?

我从事过二十多年的软件开发工作,使用C,Perl,SQL,Java,PHP,JavaScript和最近的Python进行编程。 我从来没有遇到一个问题,我无法用一些仔细的想法进行调试,并且调试得很好的print语句。

我尊重很多人说我的技术很原始,在IDE中使用真正的调试器要好得多。 然而从我的观察来看,使用我的石刀和熊皮,IDE用户似乎没有比我更快或更成功的调试。 我真诚地开放,学习正确的工具,我从来没有看到过使用可视化调试器的强大优势。

此外,我从来没有阅读过如何使用IDE有效调试的教程或书籍,超出了如何设置断点和显示变量内容的基础知识。

我错过了什么? 什么使IDE调试工具比周到地使用诊断print语句更有效?

您能否提供显示IDE调试更精细技术的资源(教程,书籍,屏幕录像)?


甜蜜的回答! 非常感谢大家花时间。 非常明亮。 我投了很多票,并没有投下任何票。

一些值得注意的地方:

  • 调试器可以帮助我对变量,代码或运行时环境的任何其他方面进行临时检查或更改,而手动调试要求我停止,编辑和重新执行应用程序(可能需要重新编译)。
  • 调试器可以附加到正在运行的进程或使用故障转储,而通过手动调试,“重现”缺陷的步骤是必需的。
  • 调试器可以以更易读的方式轻松显示复杂的数据结构,多线程环境或完整的运行时堆栈。
  • 调试器提供了许多方法来减少时间和重复性的工作来完成几乎任何调试任务。
  • 可视调试器和控制台调试器都很有用,并具有许多共同的特性。
  • 集成到IDE中的可视化调试器还使您能够在单个集成开发环境(即名称)中方便地访问智能编辑和IDE的所有其他功能。

  • IDE调试器将通过代码跟踪消息的一些功能的一些示例:

  • 在任何时间点查看调用堆栈 ,为您提供当前堆栈帧的上下文。
  • 进入无法重新编译以添加跟踪的库(假设您可以访问调试符号)
  • 程序运行时更改变量值
  • 编辑并继续 - 在代码运行时更改代码并立即查看更改结果的功能
  • 能够观察变量,看看它们何时发生变化
  • 能够跳过或重复代码段 ,以查看代码的执行方式。 这使您可以在进行理论修改之前进行测试。
  • 实时检查内存内容
  • 即使应用程序处理了某些异常 ,也会警告您。
  • 有条件的突破 ; 仅在特殊情况下停止应用程序才能分析堆栈和变量。
  • 查看多线程应用程序中的线程上下文 ,这很难通过跟踪来实现(因为来自不同线程的跟踪将在输出中交织)。
  • 总之,打印语句(通常)是静态的,如果您的原始语句不够详细,则需要重新编译以获取更多信息。 IDE消除了这个静态屏障,为您提供了一个动态的工具套件。

    当我第一次开始编码时,我无法理解与调试器有什么大不了的地方,我认为我可以通过跟踪来实现任何事情(理所当然,那是在unix上,调试器是GDB)。 但是,一旦你学会了如何正确使用图形调试器,你就不想回到打印语句。


  • IDE调试器允许您在运行时更改变量的值。

  • IDE调试器可以让你看到执行开始时你不知道你想看到的变量的值。

  • 一个IDE调试器可以让你看到调用堆栈并检查函数传递奇怪值的状态。 (认为​​这个函数是从数百个地方调用的,你不知道这些奇怪的值来自哪里)

  • IDE调试器可让您根据条件而不是行号有条件地中断代码中的任何时间点的执行。

  • 一个IDE调试器可以让你在未处理异常的情况下检查程序的状态,而不是仅仅出来。


  • 这里有一件事你绝对不能用“打印”语句进行调试,这是当客户给你带来内存转储并且说“你的程序崩溃了,你能告诉我为什么吗?”

    链接地址: http://www.djcxy.com/p/36059.html

    上一篇: Why is debugging better in an IDE?

    下一篇: masking a series with a boolean array