我从事软件开发已有二十多年,使用C,Perl,SQL,Java,PHP,JavaScript和最近的Python进行编程.我从来没有遇到过一些问题,我无法通过一些仔细的思考调试,并且调试良好的调试print语句.
我尊重很多人说我的技术是原始的,在IDE中使用真正的调试器要好得多.然而根据我的观察,IDE用户似乎没有使用我的石刀和熊皮进行更快或更成功的调试.我真诚地愿意学习正确的工具,我从未被证明使用可视化调试器具有令人信服的优势.
此外,除了如何设置断点和显示变量内容的基础知识之外,我从未阅读过如何使用IDE有效调试的教程或书籍.
我错过了什么?是什么让IDE调试工具比周到使用诊断print语句更有效?
您能否建议显示更好的IDE调试技术的资源(教程,书籍,截屏视频)?
甜蜜的答案!非常感谢大家花时间.非常有启发性.我投了很多票,并且没有投票.
一些值得注意的要点:
Leo*_*Hat 108
IDE调试器将通过代码为您提供跟踪消息的一些功能的一些示例:
总之,print语句(通常)是静态的,如果原始语句不够详细,则需要重新编译以获取其他信息.IDE将删除此静态屏障,为您提供动态工具包.
当我第一次开始编码时,我无法理解调试器的重要性是什么,我认为我可以通过跟踪实现任何功能(授权,那是在unix上,而调试器是GDB).但是一旦你学会了如何正确使用图形调试器,你就不想再回到打印语句了.
rec*_*ive 34
IDE调试器允许您在运行时更改变量的值.
通过IDE调试器,您可以查看执行开始时您不想知道的变量值.
IDE调试器允许您查看调用堆栈并检查传递奇怪值的函数的状态.(想想这个函数是从数百个地方调用的,你不知道这些奇怪的值来自哪里)
IDE调试器允许您根据条件而不是行号有条件地在代码中的任何位置中断执行.
IDE调试器将允许您在未处理的异常情况下检查程序的状态,而不仅仅是破解.
gal*_*ets 16
这是你用"print"语句无法调试的一件事,就是当客户给你带来内存转储并说"你的程序崩溃了,你能告诉我为什么吗?"
Dar*_*uck 14
我认为使用print语句进行调试是一种迷失的艺术,对每个开发人员来说都非常重要.一旦你知道如何做到这一点,某些类的错误比通过IDE更容易调试.知道这种技术的程序员也非常清楚地知道什么是有用的信息放在日志消息中(更不用说你实际上最终会读取日志)以用于非调试目的.
也就是说,你真的应该知道如何使用逐步调试器,因为对于不同类别的错误,它更容易.我将把它留给已经发布的其他优秀答案来解释为什么:)
脱离我的头顶: