2013-07-23 43 views
43

Tôi đang sử dụng mô đun pdb để gỡ lỗi chương trình. Tôi muốn hiểu cách tôi có thể thoát pdb và cho phép chương trình tiếp tục hoàn thành. Chương trình có tính toán đắt tiền để chạy, vì vậy tôi không muốn thoát mà không có kịch bản cố gắng hoàn thành. continue dường như không hoạt động. Làm thế nào tôi có thể thoát pdb và tiếp tục với chương trình của tôi?Cách thoát pdb và cho phép chương trình tiếp tục?

+2

'CONTINUE' thoát vòng, 'return' thoát phương pháp/chức năng – Stephan

+5

@Stephan: Anh ấy nói về' CONTINUE', lệnh pdb . Không phải là câu lệnh Python. – voithos

+1

@turtle: 'continue' nên" Tiếp tục thực hiện, chỉ dừng lại khi gặp phải điểm ngắt ", theo tài liệu. Bạn có một thiết lập breakpoint đó là nhận được hit? – voithos

Trả lời

90

continue nên "Tiếp tục thực hiện, chỉ dừng lại khi gặp điểm ngắt", vì vậy bạn đã đặt điểm ngắt ở đâu đó. Để loại bỏ các breakpoint (nếu bạn chèn nó bằng tay):

(Pdb) break 
Num Type   Disp Enb Where 
1 breakpoint keep yes at /path/to/test.py:5 
(Pdb) clear 1 
Deleted breakpoint 1 
(Pdb) continue 

Hoặc, nếu bạn đang sử dụng pdb.set_trace(), bạn có thể thử loại này (mặc dù nếu bạn đang sử dụng pdb theo những cách lạ mắt hơn, điều này có thể phá vỡ mọi thứ. ..)

(Pdb) pdb.set_trace = lambda: None # This replaces the set_trace() function! 
(Pdb) continue 
# No more breaks! 
+6

Ở trên không __exit__ pdb. –

+1

@SteveBarnes: Có phải không? – voithos

+7

Giới thiệu về từ thứ 15 của câu hỏi! –

4

Nếu bạn thực sự muốn thoát khỏi chương trình gỡ rối thì bạn cần phải chạy một cái gì đó giống như WinPdb cho phép bạn tách từ quá trình này và sau đó thoát khỏi debugger, (NB đó là đa nền tảng).

Nếu bạn muốn tiếp tục gỡ lỗi nhưng không còn dừng lại ở một breakpoint được thì bạn cần phải:

  1. Hãy ghi nhớ số breakpoint, (hoặc các tập tin và số dòng),
  2. Hoặc là cl bp_numberhoặcclear file:line để xóa vĩnh viễn điểm ngắt hoặcdisable pb_number để tắt nó đi nhưng có thể bật lại.
  3. Sau đó, continue và chương trình của bạn chạy cho đến khi đó khác nhau điểm ngắt được nhấn.

Để biết thêm chi tiết ở trên, hãy xem the manual.

8

Đơn giản Ctrl - D sẽ thoát ra khỏi pdb. Nếu bạn muốn tiếp tục chứ không phải là phá vỡ, chỉ cần nhấn c chứ không phải là toàn bộ continue lệnh

+1

Điều gì về khi bạn đang ở bên trong một hàm, bên trong một vòng lặp? Có vẻ như chỉ cần đi đến vòng lặp tiếp theo cho tôi, và tôi không thể thực sự đóng pdb, hoặc thậm chí đóng python, mà không đóng cửa toàn bộ thiết bị đầu cuối? –

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