J'essaie d'exécuter python -m pdb -c continue foo.py
, afin d'activer le débogage en cas d'erreur. Les arguments -c continue
doivent allow me to do this sans spécifier 'c' au démarrage du programme. Cependant, je reçois l'erreur: Error: -c does not exist
. Je vais démontrer les versions et la configuration ci-dessous avec un exemple virtualenv
.python -m pdb -c poursuivre les arguments de l'indicateur non compris
$ virtualenv --version
15.1.0
$ virtualenv tempenv
New python executable in tempenv/bin/python
Installing setuptools, pip...done.
$ source tempenv/bin/activate
(tempenv)$ which python
/usr0/home/eqzx/tempenv/bin/python
(tempenv)$ python --version
Python 2.7.6
(tempenv)$ echo "1/0" > foo.py
(tempenv)$ python foo.py
Traceback (most recent call last):
File "foo.py", line 1, in <module>
1/0
ZeroDivisionError: integer division or modulo by zero
Puis:
(tempenv)$ python -m pdb -c continue foo.py
Error: -c does not exist
Après avoir installé pdb sur place dans le virtualenv:
(tempenv)$ pip install -I pdb
(tempenv)$ which pdb
/usr0/home/eqzx/tempenv/bin/pdb
(tempenv)$ python -m pdb -c continue foo.py
Error: -c does not exist
Courir sans -c continue
fonctionne très bien (même si je suis surpris de voir à l'aide /usr/lib/python2.7/pdb.py
au lieu de pdb local? même quand j'ai réessayé avec virtualenv --no-site-packages
, il a montré toujours ce même chemin):
(tempenv)$ python -m pdb foo.py
> /usr0/home/eqzx/foo.py(1)<module>()
-> 1/0
(Pdb) c
Traceback (most recent call last):
File "/usr/lib/python2.7/pdb.py", line 1314, in main
pdb._runscript(mainpyfile)
File "/usr/lib/python2.7/pdb.py", line 1233, in _runscript
self.run(statement)
File "/usr/lib/python2.7/bdb.py", line 400, in run
exec cmd in globals, locals
File "<string>", line 1, in <module>
File "foo.py", line 1, in <module>
1/0
ZeroDivisionError: integer division or modulo by zero
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> /usr0/home/eqzx/foo.py(1)<module>()
-> 1/0
(Pdb)
également, [virtualenv] (https://github.com/pypa/virtualenv/blob/master/virtualenv.py) en soi ne semble pas transférer "pdb" (pas dans la liste 'REQUIRED_MODULES') – ewcz
Je vois. Des suggestions sur la façon dont je pourrais modifier 'pdb.py' pour continuer malgré tout? Je veux faire continuer le comportement par défaut dans Python 2.7 – eqzx
@eqzx: J'ai modifié ceci à partir de Python 3.5: https://gist.github.com/philiptzou/dbfbf727ad7127c8f276d312790eac9f. Cela semble fonctionner avec mon Python 2.7. Vous pouvez placer le fichier 'pdb.py' dans le même dossier avec le fichier à déboguer et lancer la commande. –