2010-09-15 55 views
1

例如,閃存平臺提供flash.debugger.enterDebugger()API調用,沒有工作:是否有函數調用來進入調試器?

if (some_cond()) 
{ 
    ... 
} 
else 
{ 
    enterDebugger(); 
} 

在這種情況下,如果some_cond()計算爲false,我們正處在一個調試會話(如果我們在正常的會話中,它什麼都不做),那麼執行將在調用enterDebugger的那一行停止,並且被賦予調試器的控制權,就好像在該行設置了斷點一樣。

我已經看過android.os包,但沒有發現任何喜歡它。拋出一個異常不會將控制權交給調試器,但是在引發異常的地方不能恢復代碼執行。

回答

2

Java調試支持暫停異常。你可以這樣寫:

void enterDebugger() { 
    try { 
    throw new DebugException(); 
    } 
    catch (DebugException e) { //no-op 
    } 
} 

並且設置你的IDE暫停捕獲類型爲DebugException的異常。

+0

是的,它做我想要的。謝謝。我將在throw之前添加waitForDebugger,以確保調試器已準備好處理catch。 – Simon 2010-09-15 19:37:23

1
if (someCond()) { .... } 

else { 
    android.os.Debug.waitForDebugger(); 
} 

請參閱android.os.Debug

+0

我已經嘗試了waitForDebugger調用,但它所做的只是阻塞並等待直到調試器已連接到應用程序(如果尚未完成)。 – Simon 2010-09-15 19:35:31

相關問題