2013-07-23 55 views
43

我正在使用pdb模塊來調試程序。我想了解如何退出pdb並讓程序繼續完成。該程序在運行時運行起來很昂貴,所以如果沒有腳本嘗試完成,我不想退出。 continue似乎沒有工作。我如何退出pdb並繼續執行我的程序?如何退出pdb並允許程序繼續?

+2

'continue'退出循環,'return'退出方法/函數 – Stephan

+5

@Stephan:他在談論'continue',在PDB命令。不是Python語句。 – voithos

+1

@turtle:根據文檔,'continue'應該是「繼續執行,只有遇到斷點時才停止」。你有沒有被擊中的斷點? – voithos

回答

90

continue應該「繼續執行,只有遇到斷點時才停止」,所以你在某處設置了一個斷點。要刪除斷點(如果你手動插入它):

(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 

或者,如果你使用pdb.set_trace(),你可以試試這個(不過,如果你在更看中的方式使用PDB,這可能打破東西。 ..)

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

以上不__exit__ pdb。 –

+1

@SteveBarnes:應該嗎? – voithos

+7

關於問題的第15個字! –

4

如果你真的想退出調試器,那麼你需要運行類似WinPdb,它允許你從進程分離,然後退出調試,(NB這是多平臺)。

如果您還想繼續調試,但不再停留在一個給定的斷點,那麼你需要:

  1. 記下斷點號,(或者文件和行號)中,
  2. 要麼cl bp_number要麼clear file:line永久刪除斷點disable pb_number將其關閉,但能夠切換回來。
  3. 然後continue和你的程序運行到下一個不同斷點被擊中。

有關上述內容的更多詳細信息,請參見the manual

8

簡單Ctrl - D將突破pdb。如果你想繼續,而不是突破,只需按Ç,而不是整個continue命令

+1

當你在一個函數內部,在一個循環內怎麼樣?它似乎只是去我的下一個循環,我不能關閉pdb,甚至關閉python,而不關閉整個終端? –

相關問題