由于Python是一种动态的解释语言,因此您无需在运行代码之前编译代码.因此,只需编写代码,运行代码,查看发生的问题并修复它们就非常容易.使用热键或宏可以使这非常快.
因此,因为很容易立即看到程序的输出和可能发生的任何错误,所以我还没有使用调试工具.有什么情况可能要求使用真正的调试器与我目前使用的方法?
在我陷入困境之前我想知道,因为我不知道如何解决这个问题而感到沮丧.
在30年的编程中,我已经使用了4次调试器.所有四次都是读取core
从C程序生成的文件崩溃,以找到埋在那里的追溯信息.
即使在编译语言中,我也不认为调试器有多大帮助.许多人喜欢调试器,使用它们有一些原因,我敢肯定,或者人们不会对它们表现出如此的爱和关怀.
这就是重点 - 软件就是知识捕获.
是的,它必须运行.然而,更重要的是,软件具有意义.
这不是对您使用调试器的起诉.但是,我发现那些依赖于调试的人有时会生成看起来很奇怪的代码,而且对于它的含义也没有很好的理由.他们只能说"它可能是一个黑客,但它有效."
我对调试器的建议是"不要打扰".
"但是,如果我完全难倒怎么办?" 你问,"那我应该学习调试器吗?" 完全被什么困扰?语言?Python太简单了,无法彻底迷惑.有些图书馆?也许.
这是你做的 - 有或没有调试器.
你有源,阅读它.
你写小测试来锻炼图书馆.如果可能,使用交互式shell.[所有非常好的库似乎都使用交互式Python模式显示其功能 - 我努力实现这种紧密,清晰的简单性.]
你有源,添加打印功能.
我使用pdb进行基本的python调试.我使用它的一些情况是:
当你有一个循环迭代超过100,000个条目并希望在特定点中断时,它变得非常有用.(条件中断)
跟踪别人代码的控制流程.
使用调试器总是比使用打印机丢弃代码更好.
通常情况下,可能会有多个故障点导致错误,所有情况在第一次看起来都不明显.因此,你寻找明显的地方,如果没有什么是错的,你继续前进并添加更多的打印..调试器可以节省你的时间在这里,你不需要添加打印并再次运行.
通常当错误被隐藏在某些功能中时,我不确切知道究竟是什么或在哪里.要么插入几十个log.debug()
电话,然后必须将它们取出,或者只是放入:
import pdb pdb.set_trace ()
然后运行该程序.调试器将在到达该点时启动并给我一个完整的REPL来进行调整.