草庐IT

python - 使用pdb调试Python时如何打印所有变量值,而不指定每个变量?

我正在使用pdb调试我的Python脚本,手册说我可以使用pvariables命令在某个点打印指定变量的值。但是如果我有很多变量,比如20个变量,我想跟踪所有变量的值怎么办?如何在不手动指定每一个的情况下打印所有这些?以这个脚本为例:a=1b=2c=3我可以使用pdb对其进行调试,然后使用pa,b,c将它们全部打印出来,如下所示:$python-mpdbtest.py>/media/test.py(1)()->a=1(Pdb)n>/media/test.py(2)()->b=2(Pdb)n>/media/test.py(3)()(Pdb)n--Return-->/media/test.

python - 如何跳过 Python 调试器 (pdb) 中的列表理解?

在pdb中,next指令不会跳过列表推导,而是逐步完成每次迭代。有没有办法跳过它们,以便在列表理解后的下一行继续调试?我不得不求助于列出代码,在下一行设置断点,然后继续执行到下一个断点。这很烦人,我想一定有更好的方法。 最佳答案 您可以使用until命令。pdb中helpuntil的输出:unt(il)Continueexecutionuntilthelinewithanumbergreaterthanthecurrentoneisreachedoruntilthecurrentframereturns

python - 如何跳过 Python 调试器 (pdb) 中的列表理解?

在pdb中,next指令不会跳过列表推导,而是逐步完成每次迭代。有没有办法跳过它们,以便在列表理解后的下一行继续调试?我不得不求助于列出代码,在下一行设置断点,然后继续执行到下一个断点。这很烦人,我想一定有更好的方法。 最佳答案 您可以使用until命令。pdb中helpuntil的输出:unt(il)Continueexecutionuntilthelinewithanumbergreaterthanthecurrentoneisreachedoruntilthecurrentframereturns

python - pdb.set_trace() 导致卡住的 Nose 测试,不会进入调试器

我正在使用Nose测试运行一套测试(.py文件)。使用经典importpdb;pdb.set_trace()nosetests运行永远不会完成。它只是卡在设置断点的位置,但从不掉入pdb调试器。任何想法为什么会这样?我尝试将断点移动到多个不同的位置(其他测试函数、其他文件),但均无济于事。 最佳答案 使用-s/--nocapture选项运行Nose,您将能够看到pdb提示并与调试器正常交互。如果使用命令行意味着:-pythonmanage.pytest-s[other-opts-and-args]

python - pdb.set_trace() 导致卡住的 Nose 测试,不会进入调试器

我正在使用Nose测试运行一套测试(.py文件)。使用经典importpdb;pdb.set_trace()nosetests运行永远不会完成。它只是卡在设置断点的位置,但从不掉入pdb调试器。任何想法为什么会这样?我尝试将断点移动到多个不同的位置(其他测试函数、其他文件),但均无济于事。 最佳答案 使用-s/--nocapture选项运行Nose,您将能够看到pdb提示并与调试器正常交互。如果使用命令行意味着:-pythonmanage.pytest-s[other-opts-and-args]

python - 以某种方式使用 py.test 时,我可以使用 python 调试器进行调试吗?

我正在使用py.test对我的python程序进行单元测试。我希望以正常方式使用python调试器调试我的测试代码(我的意思是代码中的pdb.set_trace()),但我无法让它工作。将pdb.set_trace()放入代码中不起作用(引发IOError:在捕获输出时从标准输入读取)。我也尝试过使用--pdb选项运行py.test,但如果我想探索断言之前发生的事情,这似乎并不能解决问题。当断言失败时它会中断,并且从该行继续意味着终止程序。有没有人知道调试的方法,或者调试和py.test不应该在一起? 最佳答案 这真的很简单:在您想

python - 以某种方式使用 py.test 时,我可以使用 python 调试器进行调试吗?

我正在使用py.test对我的python程序进行单元测试。我希望以正常方式使用python调试器调试我的测试代码(我的意思是代码中的pdb.set_trace()),但我无法让它工作。将pdb.set_trace()放入代码中不起作用(引发IOError:在捕获输出时从标准输入读取)。我也尝试过使用--pdb选项运行py.test,但如果我想探索断言之前发生的事情,这似乎并不能解决问题。当断言失败时它会中断,并且从该行继续意味着终止程序。有没有人知道调试的方法,或者调试和py.test不应该在一起? 最佳答案 这真的很简单:在您想

python - 是否可以从代码进入 ipython?

对于我的调试需求,pdb已经很不错了。但是,如果我可以进入ipython,那将是much更酷(并且很有帮助)。这可能吗? 最佳答案 有一个ipdb将iPython嵌入标准pdb的项目,因此您可以这样做:importipdb;ipdb.set_trace()它可以通过通常的pipinstallipdb安装。.ipdb很短,所以除了easy_installing,你还可以创建一个文件ipdb.py在你的Python路径的某个地方,并将以下内容粘贴到文件中:importsysfromIPython.DebuggerimportPdbfro

python - 是否可以从代码进入 ipython?

对于我的调试需求,pdb已经很不错了。但是,如果我可以进入ipython,那将是much更酷(并且很有帮助)。这可能吗? 最佳答案 有一个ipdb将iPython嵌入标准pdb的项目,因此您可以这样做:importipdb;ipdb.set_trace()它可以通过通常的pipinstallipdb安装。.ipdb很短,所以除了easy_installing,你还可以创建一个文件ipdb.py在你的Python路径的某个地方,并将以下内容粘贴到文件中:importsysfromIPython.DebuggerimportPdbfro

python - 如何退出pdb并允许程序继续?

我正在使用pdb模块来调试程序。我想了解如何退出pdb并允许程序继续完成。该程序在计算上运行起来很昂贵,所以我不想在没有脚本尝试完成的情况下退出。continue似乎不起作用。如何退出pdb并继续执行我的程序? 最佳答案 continue应该“继续执行,仅在遇到断点时停止”,因此您在某处设置了断点。删除断点(如果您手动插入):(Pdb)breakNumTypeDispEnbWhere1breakpointkeepyesat/path/to/test.py:5(Pdb)clear1Deletedbreakpoint1(Pdb)cont