2012-10-08 30 views
6

Tôi tương đối mới với python và pdb, nhưng tôi có nhiều kinh nghiệm với gdb.PDB.run - khởi động lại phiên pdb

Vấn đề của tôi là nếu tôi đặt một số điểm ngắt trong mã của mình tại một thời điểm nào đó, tôi sẽ muốn thay đổi thứ gì đó và chạy lại phiên gỡ lỗi của mình giữ lại các điểm ngắt này. Tuy nhiên bước vào "chạy" trong các trường hợp phiên pdb tôi phiên của tôi chấm dứt với kết quả như sau

(Pdb) run 
    Traceback (most recent call last): 
    File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main 
    "__main__", fname, loader, pkg_name) 
    File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code 
    exec code in run_globals 
    File "/usr/lib64/python2.6/pdb.py", line 1319, in <module> 
    pdb.main() 
    File "/usr/lib64/python2.6/pdb.py", line 1312, in main 
    pdb.interaction(None, t) 
    File "/usr/lib64/python2.6/pdb.py", line 198, in interaction 
    self.cmdloop() 
    File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop 
    stop = self.onecmd(line) 
    File "/usr/lib64/python2.6/pdb.py", line 267, in onecmd 
    return cmd.Cmd.onecmd(self, line) 
    File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd 
    return func(arg) 
    File "/usr/lib64/python2.6/pdb.py", line 661, in do_run 
    raise Restart 
pdb.Restart 
]$ 

Tôi đã thử này trên hai nền tảng Linux độc lập và có kết quả tương tự nhưng tôi không thể tìm thấy bất kỳ sự điều chỉnh trong tài liệu.

Trả lời

8

Vì vậy, nếu có ai quan tâm vấn đề là "chạy" trong pdb không giống chính xác như "chạy" trong gdb. Trong gdb nếu tôi nhập chạy chương trình khởi động lại và tiếp tục đến điểm ngắt đầu tiên. Trong pdb chương trình khởi động lại và đi đến đầu của tập tin. Sau đó tôi phải bấm 'n' theo sau là 'c' để đến điểm đầu tiên. Nếu, cố gắng để có được chương trình để chạy, tôi gõ chạy một lần thứ hai lúc bắt đầu của tập tin trình gỡ lỗi bị treo, như được hiển thị ở trên.

+0

Có, ai đó quan tâm. Cảm ơn! – Oddthinking

+2

Đây vẫn là lỗi trong pdb – erjoalgo

+0

Bạn có thể 'c' ngay sau khi khởi động lại, phải không? –

1

Khi gặp phải một tình trạng bất thường (ví dụ, một lỗi trong chương trình của bạn), pdb thay helpfully nói:

Uncaught exception. Entering post mortem debugging 
Running 'cont' or 'step' will restart the program 

Ở đây, gõ "chạy" hoặc "khởi động lại" sẽ làm cho quá trình pdb để unceremoniously chấm dứt như Các trạng thái OP (nhưng "tiếp" hoặc "bước" sẽ khởi động lại như đã hứa).

Có lẽ nhiều pythonistas thiếu kiên nhẫn sẽ thay vì "chạy" hoặc "khởi động lại" bất kể chúng tôi đã nhập "đăng mortem gỡ lỗi" hay chưa.

Các vấn đề liên quan