2012-08-10 36 views
5

我想讓pydev進入交互式控制檯模式,只要我的程序引發一個未處理的異常,但我無法弄清楚如何去做。因爲它現在表現出來,所以例外情況會被報告,並且這個過程會立即終止。如何在pydev中啓用死後調試?

後,我身邊的一些搜索發現這一點: http://sourceforge.net/tracker/index.php?func=detail&aid=3029746&group_id=85796&atid=577332 這表明使用pydevd.set_pm_excepthook()

然而,當我添加

import pydevd 
pydevd.set_pm_excepthook() 

我的代碼,我得到一個異常:

This function is now replaced by GetGlobalDebugger().setExceptHook and is now controlled by the PyDev UI.') 
DeprecationWarning: This function is now replaced by GetGlobalDebugger().setExceptHook and is now controlled by the PyDev UI. 

但是:

GetGlobalDebugger().setExceptHook() 

似乎不起作用,GetGlobalDebugger()在全局命名空間中不存在。

+0

我發現瞭如何,但似乎我不能在8小時內回答我自己的問題,所以我想我應該等待。 – 2012-08-10 10:15:21

回答

4

實際上,您不需要以編程方式執行此操作......您可以轉到調試透視圖> pydev>管理異常斷點並檢查「未捕獲異常暫停」。

+0

哦,這很方便。認爲應該有這樣的選項,但沒有在首選項或調試配置中找到它。謝謝你的提示。 – 2012-08-14 15:29:58

+0

這是什麼程序? – Seanny123 2014-10-10 01:53:10

+0

這是在PyDev中進行開發的時候:http://pydev.org/ – 2014-10-10 12:18:19

2

好了,有一段時間我想通了明顯的後,代碼應該是:

import pydevd 
pydevd.GetGlobalDebugger().setExceptHook(Exception, True, False) 

捕捉到任何異常unhadled。該方法可以在其他方式使用進入調試模式時,程序崩潰,如DOC setExceptHook的記載:

應該叫設置例外處理,並 是否應打破未被捕獲並且 捕獲異常。

可以接收一個參數,僅在某些例外情況下停止。

E.g.: 
     set_pm_excepthook((IndexError, ValueError), True, True) 

     or 

     set_pm_excepthook(IndexError, True, False) 

     if passed without a parameter, will break on any exception 

    @param handle_exceptions: exception or tuple(exceptions) 
     The exceptions that should be handled. 

    @param break_on_uncaught bool 
     Whether it should break on uncaught exceptions. 

    @param break_on_caught: bool 
     Whether it should break on caught exceptions. 

我希望這會幫助別人誰願意使用PyDev調試中湮沒無異常上升後,調試程序。