Rumah >pembangunan bahagian belakang >Tutorial Python >Python 程序如何高效地调试?
现在我在debug python程序就只是简单在有可能错误的地方print出来看一下,不知道python有没像c++的一些IDE一样有单步调试这类的工具?或者说各位python大神一般是怎么debug自己的python程序的?
<code class="language-python"><span class="kn">import</span> <span class="nn">sys</span>
<span class="k">class</span> <span class="nc">ExceptionHook</span><span class="p">:</span>
<span class="n">instance</span> <span class="o">=</span> <span class="bp">None</span>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">instance</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">IPython.core</span> <span class="kn">import</span> <span class="n">ultratb</span>
<span class="bp">self</span><span class="o">.</span><span class="n">instance</span> <span class="o">=</span> <span class="n">ultratb</span><span class="o">.</span><span class="n">FormattedTB</span><span class="p">(</span><span class="n">mode</span><span class="o">=</span><span class="s">'Plain'</span><span class="p">,</span>
<span class="n">color_scheme</span><span class="o">=</span><span class="s">'Linux'</span><span class="p">,</span> <span class="n">call_pdb</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">sys</span><span class="o">.</span><span class="n">excepthook</span> <span class="o">=</span> <span class="n">ExceptionHook</span><span class="p">()</span>
</code>
想要类gdb的功能,可以使用pdb,例如:<code class="language-text">pip install pudb
</code>
常年print+type的路过~
必须是ipython。调试程序的最佳时刻是程序出错的时候,有时候运行出了错误之后再调用调试器重现一遍可能错误又不能复现了,或者是再现错误需要很长的运行时间。而在ipython里运行程序可以在出错的第一时间进行调试,查看堆栈里的内容,绝对是方便之极。
试了下vs2015的py组件,感觉不比pycharm差
常年vim或者textmate. 调试print.dir, type等。再搞不懂就pdb..