2017-04-07 40 views
1

我試圖運行python -m pdb -c continue foo.py,爲了啓用錯誤調試。 -c continue參數應爲allow me to do this,程序啓動時不指定'c'。但是,我收到錯誤:Error: -c does not exist。我將用virtualenv示例演示以下版本和設置。python -m pdb -c繼續標誌參數不能理解

$ 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 

然後:

(tempenv)$ python -m pdb -c continue foo.py 
Error: -c does not exist 

本地安裝PDB到的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 

運行沒有-c continue工作正常(雖然我很驚訝,它使用/usr/lib/python2.7/pdb.py而不是看當地pdb?即使當我重試virtualenv --no-site-packages,它仍然顯示相同的路徑):

(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) 

回答

2

您正在使用Python 2.7,其中doesn't support the -c parameter

New in version 3.2: pdb.py now accepts a -c option that executes commands as if given in a .pdbrc file, see Debugger Commands .

通過升級你的Python到3.6版本將解決這個問題。

我沒有在PyPI上找到任何將3.2+ pdb軟件包反編譯爲Python 2.7的軟件包。 The one you were trying to install是一個「密碼數據庫」。

+0

另外,[virtualenv](https://github.com/pypa/virtualenv/blob/master/virtualenv.py)本身似乎不會傳輸「pdb」(不在「REQUIRED_MODULES」列表中) – ewcz

+0

我懂了。任何關於如何修改'pdb.py'以繼續的建議?我想繼續Python 2.7的默認行爲 – eqzx

+1

@eqzx:我從Python 3.5修改了這個:https://gist.github.com/philiptzou/dbfbf727ad7127c8f276d312790eac9f。它似乎與我的Python 2.7一起工作。您可以將'pdb.py'文件放在與要調試的文件相同的文件夾中,然後運行該命令。 –