在Python3中运行此代码后:importpdbdeffoo():nums=[1,2,3]a=5pdb.set_trace()foo()以下表达式有效:(Pdb)print(nums)[1,2,3](Pdb)print(a)5(Pdb)[xforxinnums][1,2,3]但以下表达式失败:(Pdb)[x*aforxinnums]***NameError:globalname'a'isnotdefined以上在Python2.7中运行良好。这是一个错误还是我遗漏了什么?更新:查看新接受的答案。这确实是一个错误(或有问题的设计),现在已通过在pdb中引入新的命令和模式来解决。
在Python3中运行此代码后:importpdbdeffoo():nums=[1,2,3]a=5pdb.set_trace()foo()以下表达式有效:(Pdb)print(nums)[1,2,3](Pdb)print(a)5(Pdb)[xforxinnums][1,2,3]但以下表达式失败:(Pdb)[x*aforxinnums]***NameError:globalname'a'isnotdefined以上在Python2.7中运行良好。这是一个错误还是我遗漏了什么?更新:查看新接受的答案。这确实是一个错误(或有问题的设计),现在已通过在pdb中引入新的命令和模式来解决。
我有IPython(0.13.1)和ipdb(0.7)安装后,我插入了importipdb;ipdb.set_trace()行在我的脚本中运行pythonmy_script.py.现在我在ipdb提示符下,有一些自动完成(例如,一个裸标签),但它与我输入IPython时得到的自动完成不同。在ipdb提示符requests.然后(导入后)没有像IPython那样给我一个属性列表。如何使用ipdb获得与在IPython中相同的选项卡完成?顺便说一句,当我运行python-mipdbmy_script.py时制表符补全的工作方式与IPython中一样,但它的缺点是它从第一行而不是我放置的行启
我有IPython(0.13.1)和ipdb(0.7)安装后,我插入了importipdb;ipdb.set_trace()行在我的脚本中运行pythonmy_script.py.现在我在ipdb提示符下,有一些自动完成(例如,一个裸标签),但它与我输入IPython时得到的自动完成不同。在ipdb提示符requests.然后(导入后)没有像IPython那样给我一个属性列表。如何使用ipdb获得与在IPython中相同的选项卡完成?顺便说一句,当我运行python-mipdbmy_script.py时制表符补全的工作方式与IPython中一样,但它的缺点是它从第一行而不是我放置的行启
在使用ipdbmy_script.py调试Python脚本时,我想在中使用%paste、%cd等IPython魔术函数>ipdb调试session外壳。是否有可能以及如何? 最佳答案 根据ipdbGithubrepo魔术IPython函数不可用。幸运的是,IPythondebugger提供了一些关于如何在不启动单独的IPythonshell的情况下获得此功能的线索。这是我运行%cpaste所做的:ipdb>fromIPythonimportget_ipythonipdb>shell=get_ipython()ipdb>shell.f
在使用ipdbmy_script.py调试Python脚本时,我想在中使用%paste、%cd等IPython魔术函数>ipdb调试session外壳。是否有可能以及如何? 最佳答案 根据ipdbGithubrepo魔术IPython函数不可用。幸运的是,IPythondebugger提供了一些关于如何在不启动单独的IPythonshell的情况下获得此功能的线索。这是我运行%cpaste所做的:ipdb>fromIPythonimportget_ipythonipdb>shell=get_ipython()ipdb>shell.f
我在Python代码的某处使用了ipdb.set_trace()。是否可以使用IPDB命令忽略此断点?clear告诉我它清除了所有断点,但是当IPDB偶然发现带有ipdb.set_trace()的行时,它再次停止。disable1告诉我:Nobreakpointnumbered1ignore1说:Breakpointindex'1'isnotvalid澄清一下:当然,我可以简单地从我的源代码中删除断点。但这需要退出调试器并重新启动它。通常需要做很多工作才能到达某个地方,重新启动调试器会使生活变得更加困难。此外,如果有一个巨大的循环并且您想要检查循环中的对象,最简单的方法是在循环中直接在
我在Python代码的某处使用了ipdb.set_trace()。是否可以使用IPDB命令忽略此断点?clear告诉我它清除了所有断点,但是当IPDB偶然发现带有ipdb.set_trace()的行时,它再次停止。disable1告诉我:Nobreakpointnumbered1ignore1说:Breakpointindex'1'isnotvalid澄清一下:当然,我可以简单地从我的源代码中删除断点。但这需要退出调试器并重新启动它。通常需要做很多工作才能到达某个地方,重新启动调试器会使生活变得更加困难。此外,如果有一个巨大的循环并且您想要检查循环中的对象,最简单的方法是在循环中直接在
我喜欢使用以下方法检查Python脚本中的错误:$python3-mpdbmy_script.py这让我进入一个pdb提示符,我可以从那里c继续执行,当它遇到错误时,我可以检查变量然后q退出脚本执行以返回我的shell。我对iPython调试器模块进行了同样的尝试,因为它更加丰富多彩:$python3-mipdbmy_script.py但是,检查完错误后,我无法退出调试器。使用qquit命令只是在重新执行脚本和事后分析模式之间不断切换:$python3-mipdbmy_script.pyipdb>cUncaughtexception.Enteringpostmortemdebuggin
我喜欢使用以下方法检查Python脚本中的错误:$python3-mpdbmy_script.py这让我进入一个pdb提示符,我可以从那里c继续执行,当它遇到错误时,我可以检查变量然后q退出脚本执行以返回我的shell。我对iPython调试器模块进行了同样的尝试,因为它更加丰富多彩:$python3-mipdbmy_script.py但是,检查完错误后,我无法退出调试器。使用qquit命令只是在重新执行脚本和事后分析模式之间不断切换:$python3-mipdbmy_script.pyipdb>cUncaughtexception.Enteringpostmortemdebuggin