2016-03-22 5 views
0

誰かが理由を知っていますか、特定の場所で、gdb内部のPythonコードが例外を適切に処理していませんか?あるいは、明確にするために、例外メッセージ が* gudバッファー以外のどこかにあるかもしれません。 gdbは、制御として を期待どおりにプロンプ​​トに戻していません。gdb Python API:例外が消えていますか?

例えば

(Iは、GNUのGDB(GDB)のEmacsで7.11.50.20160212-のgit(24.5.1)GUDモードを使用している):

class SomeEvent(): 
    def __init__(self, ...): 
     ... do something ... 
    def __call__(self): 
     ... do something BAD here ... 


gdb.post_event(SomeEvent()) 

'SomeEvent' が処理され

、 '__call__'を悪いコードまで実行して戻り、通常の操作を続行します(私が見ることができるように)。

サブクラス化されたgdb.BreakpointのStop()など、他の 'コールバック'タイプのメソッドでこの動作が気づいています。

答えて

1

gdb.post_eventは、イベントオブジェクトが呼び出されたときに例外を無視します。あなたはgdbpy_run_eventsで、ソースコードにこれを明確に見ることができます:

/* Ignore errors. */ 
    call_result = PyObject_CallObject (item->event, NULL); 
    if (call_result == NULL) 
    PyErr_Clear(); 

これは私にはバグのように思える - 代わりにスタックトレースか何かを印刷するには、より有用であろう。

+0

これはhttps://sourceware.org/bugzilla/show_bug.cgi?id=14062 –

+0

です。コメントしたいと思っていました、トム!私にソースの手がかりを与えてくれてありがとう。はい、_something_を表示する方が良いでしょう。 –

関連する問題