2012-08-10 8 views
5

私のプログラムが未処理の例外を発生させたときにpydevを対話型コンソールモードにしたいのですが、どうやってそれを行うのか分かりません。現在動作しているので、例外が報告され、プロセスは即座に終了します。pydevで死後デバッグを有効にするにはどうすればよいですか?

は、このI周りにいくつかの検索が見つかった後:私は私のコードに

import pydevd 
pydevd.set_pm_excepthook() 

を追加するときに、しかしpydevd.set_pm_excepthook()

を使用することを示唆して http://sourceforge.net/tracker/index.php?func=detail&aid=3029746&group_id=85796&atid=577332 は、私は例外を取得:

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()はグローバル名前空間に存在しません。

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

任意のunhadled例外をキャプチャするには:

+0

私は方法を見つけましたが、私は8時間以内に私自身の質問に答えることができないので、私は待つべきだと思います。 –

答えて

4

実際には、これをプログラマチックに行う必要はありません。デバッグパースペクティブ> pydev>例外ブレークポイントを管理し、「キャッチされていない例外を中断する」にチェックを入れることができます。

+0

ああ、それは便利です。そのようなオプションがあるべきだと思っていましたが、設定やデバッグの設定でそれを見つけられませんでした。先端に感謝します。 –

+0

これはどのプログラムですか? – Seanny123

+0

これはPyDevの内部で開発するときです:http://pydev.org/ –

2

[OK]を、私は明白なことを考え出ししばらく後、コードがなければなりませんので。

処理される例外を設定するために呼び出される必要があり、それ が上破る必要があるかどうか: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. 

私は、これは例外が提起された後、プログラムをデバッグするためにEclipseでPyDevはデバッガを使用したい他の人を助けいただければ幸いです。