如何调试Python程序 通过IDLE】的更多相关文章

在python3.3环境下 1.写一个简单地Python源文件,比如test.py,内容如下: import sys, osdef test(arg1, arg2): print "begin test..." fun1('1', '2') print arg1 print arg2 def fun1(arg1, arg2):         print arg1         print arg2   if __name__ == '__main__':    test(*sys.…
pdb是python内置的调试工具, 它可以在终端中调试Python程序, 这允许pdb在很多无法安装IDE的服务器上使用. 虽然远程调试使用广泛, 但在必要的时候(比如难以在本地搭建运行环境)pdb仍然是一个便利的选择. 我们可以在python源代码中设置断点: import pdb def func(): for i in range(100): pdb.set_trace() # set breakpoint print(i) 随后执行源文件, pdb.set_trace()会如同一个断点…
程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug. 第一种方法简单直接粗暴有效,就是用print把可能有问题的变量打印出来看看: ? 1 2 3 4 5 6 7 8 9 10 # err.py def foo(s):   n = int(s)   print '>>> n = %d' % n…
利用Pycharm断点调试Python程序 1.代码 准备没有语法错误的Python程序: #!/usr/bin/pythonimport numpy as np class Network: def __init__(self,sizes): self.num_layers=len(sizes) self.sizes=sizes self.biases=[np.random.randn(y,1) for y in sizes[1:]] self.weights=[np.random.randn…
1. 设置断点 先放例子: import pdb a=1 b=10 pdb.set_trace()#这里是断点 c=a+b print(c) import pdb 后,用pdb.set_trace()设置断点. 2. 调试. 查看变量的类型值等 程序会在pdb.set_trace()的地方中断,如下图: 此时输入:p a 则会输出变量a的值 whatis a 则会输出a的类型: c是继续 b是设置断点 这些是常用的. 3. 帮助 在(PDB)下,输入help就能看到完整的列表: 比如,help…
Python自带的pdb库,发现用pdb来调试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的. 用pdb调试有多种方式可选: 1. 命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前 python -m pdb myscript.py 2. 在Python交互环境中启用调试 >>> import pdb >>> import mymodule >>> pdb.run(‘mymodule…
Python自带的pdb库,发现用pdb来调试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的. 用pdb调试有多种方式可选: 1. 命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前 python -m pdb myscript.py 2. 在Python交互环境中启用调试 >>> import pdb >>> import mymodule >>> pdb.run(‘mymodule…
Ctrl+F5 以Debug模式运行文件 在debug之前记得用%reset 指令清空一下ipython工作空间中的变量,以免影响debug中变量值的查看 无论你是否打断点,都会在第一行语句执行之前中断一次 !(python语句)可以在pdb提示符下执行python语句,可以用来查看变量值或者给变量临时指定值 c命令或者Ctrl+F12可以让程序执行到下一个断点 q命令退出调试 Ctrl+F10 单行执行 双击行首设置断点,按住Ctrl+Shift 双击行首可以设置条件断点…
pdb 关键步骤 python -m pdb ***.py n 单步…
一般调试程序的时候都比较倾向print,利用直接打印的方法作出判断,但是print只能打印出结果,对类型无法作出判断.例如: a = 5 b = ' print(a) print(b) 结果为: 5 5 对于a和b从表面看是一样的,可能就会默认为a == b 实则a为int类型,b为string类型 再用repr看看结果: a = 5 b = ' print(repr(a)) print(repr(b)) 结果为: 5 ' 对于动态的python对象来说,利用repr也是很方便的: class…