标签: pdb

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

我正在使用py.test对我的python程序进行单元测试.我希望用python调试器以正常的方式调试我的测试代码(我的意思是代码中的pdb.set_trace())但是我无法使它工作.

将pdb.set_trace()放入代码中不起作用(引发IOError:在捕获输出时从stdin读取).我也尝试使用选项--pdb运行py.test但是如果我想探索在断言之前发生的事情,那似乎并不起作用.当断言失败时它会中断,从该行继续前进意味着终止程序.

有没有人知道一种方法来调试,或者调试和py.test只是不想在一起?

python unit-testing pdb

64
推荐指数
5
解决办法
3万
查看次数

pdb.set_trace()导致冻结的nosetests,不会进入调试器

我正在使用nosetests运行一套测试(.py文件).使用经典

import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

测试运行从未完成.它只是挂在断点已设置的位置,但从不插入pdb调试器.

任何想法为什么会这样?我已经尝试将断点移动到许多不同的位置(其他测试功能,其他文件)无济于事.

python nosetests pdb

54
推荐指数
2
解决办法
8084
查看次数

Python调试器:单步执行您以交互方式调用的函数

Python非常酷,但不幸的是,它的调试器不如perl -d好.

在试验代码时,我常常做的一件事是从调试器中调用一个函数,然后进入该函数,如下所示:

# NOTE THAT THIS PROGRAM EXITS IMMEDIATELY WITHOUT CALLING FOO()
~> cat -n /tmp/show_perl.pl
1  #!/usr/local/bin/perl
2
3  sub foo {
4      print "hi\n";
5      print "bye\n";
6  }
7
8  exit 0;

~> perl -d /tmp/show_perl.pl

Loading DB routines from perl5db.pl version 1.28
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(/tmp/show_perl.pl:8):    exit 0;

# MAGIC HAPPENS HERE -- I AM STEPPING INTO A FUNCTION THAT I AM …
Run Code Online (Sandbox Code Playgroud)

python debugging pdb

52
推荐指数
2
解决办法
2万
查看次数

你如何在pdb中观察变量

我正在调试一个python脚本,我想看一个变量来进行更改(很像你可以在gdb中观看内存地址).有没有办法做到这一点?

python pdb

52
推荐指数
4
解决办法
2万
查看次数

Docker-compose和pdb

我看到我不是第一个提出这个问题的人,但对此没有明确答案:

如何在Python开发中使用pdb和docker-composer?

当你问谷歌叔叔django docker你得到了很棒的docker-composer示例和教程,我有一个环境工作 - 我可以运行docker-compose up,我有一个整洁的开发人员环境,但PDB不工作(这是非常悲伤).

我可以运行定居docker-compose run my-awesome-app python app.py 0.0.0.0:8000,但后来我可以通过访问我的应用程序http://127.0.0.1:8000从主机(我可以带docker-compose up),似乎每次使用时间run新容器等制成的:dir_app_13dir_db_4我不欲望.

善意的人请帮助我.

PS
我正在使用pdb ++作为该示例,并使用此django示例中的基本docker-compose.yml .我也进行了实验,但似乎没有什么可以帮助我.我正在使用docker -composer 1.3.0rc3,因为它有Dockerfile指向支持.

python pdb docker docker-compose

51
推荐指数
2
解决办法
1万
查看次数

调试emacs中的python程序

如何在emacs中调试python程序?

我用 python-mode.el

我得到了参考

import pdb; pdb.set_trace();
Run Code Online (Sandbox Code Playgroud)

但不知道如何使用它.

python debugging emacs pdb

50
推荐指数
3
解决办法
3万
查看次数

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

pdbnext指令不跨过列表内涵,而是通过每个迭代步骤.有没有办法跨过它们,所以调试将在列表理解后的下一行继续?

我不得不求助于列出代码,在下一行设置断点,然后继续执行到下一个断点.这很烦人,我认为必须有更好的方法.

python list-comprehension pdb

50
推荐指数
1
解决办法
4790
查看次数

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

我正在使用pdb调试我的Python脚本,手册说我可以使用p变量命令在某个点打印指定变量的值.但是,如果我有很多变量,比如20个变量,我想追踪所有这些变量的价值呢?如何在不指定每个手动的情况下打印所有这些?以此脚本为例:

a = 1
b = 2
c = 3
Run Code Online (Sandbox Code Playgroud)

我可以使用pdb调试它并使用pa,b,c打印所有这些,如下所示:

$ python -m pdb test.py 
> /media/test.py(1)<module>()
-> a = 1
(Pdb) n
> /media/test.py(2)<module>()
-> b = 2
(Pdb) n
> /media/test.py(3)<module>()
(Pdb) n
--Return--
> /media/test.py(3)<module>()->None
-> c = 3
(Pdb) p a, b, c
(1, 2, 3)
(Pdb) 
Run Code Online (Sandbox Code Playgroud)

但我必须手动指定每个变量.有没有一种方法可以一次打印所有变量,而无需指定每一个变量?

python debugging pdb

48
推荐指数
2
解决办法
6万
查看次数

是否有可能在pdb中倒退?

在我点击n来评估一条线之后,我想回去然后点击s以进入该功能,如果它失败了.这可能吗?

文档说:

j(ump)lineno 设置将要执行的下一行.仅适用于最底部的框架.这使您可以跳回并再次执行代码,或者跳转到跳过您不想运行的代码.

python pdb

48
推荐指数
3
解决办法
2万
查看次数

Python单元测试:测试失败时自动运行调试器

有没有办法在单元测试失败时自动启动调试器?

现在我只是手动使用pdb.set_trace(),但这非常繁琐,因为我需要每次添加它并在结束时将其取出.

例如:

import unittest

class tests(unittest.TestCase):

    def setUp(self):
        pass

    def test_trigger_pdb(self):
        #this is the way I do it now
        try:
            assert 1==0
        except AssertionError:
            import pdb
            pdb.set_trace()

    def test_no_trigger(self):
        #this is the way I would like to do it:
        a=1
        b=2
        assert a==b
        #magically, pdb would start here
        #so that I could inspect the values of a and b

if __name__=='__main__':
    #In the documentation the unittest.TestCase has a debug() method
    #but I don't understand how to use it
    #A=tests() …
Run Code Online (Sandbox Code Playgroud)

python unit-testing pdb python-unittest

39
推荐指数
2
解决办法
2万
查看次数