2015-04-16 21 views
1

如果我有像以下代碼:蝕調試器:輸入的方法,而無需輸入嵌套方法

execute(getA(), getB(), getC(), getD(), getE()); 

是否有可能直接步入​​而不以及離開每個的其他方法第一步進?我知道我可以在​​的條目中設置一個斷點,但是在我的代碼中,這個方法在很多不同的地方被調用,我不想排序所有的調用。我也沒有能夠在入口斷點處使用條件,因爲該方法多次在同一個對象上調用,但這只是我感興趣的一個特定調用。

+0

我從來沒有見過一個解決方案,除了'執行'內的一個斷點,這可能很煩人,特別是在多線程環境中。只有其他的事情你可以重寫的方法是將'getA()'等結果存儲到你直接傳入的變量中 – Kon

+1

我認爲人民幣上有一個「Run to Line」選項可用於運行當前暫停線程前往該點。這是否做你想做的事? – JonK

回答

0

假設你可以更改源代碼,討厭冗長的方法是將拆分到多個行...

Object a = getA(); 
Object b = getB(); 
//...etc... 

execute(a, b, ...); 

現在你把一個斷點在電話會議上在這個位置執行並一步,它會直接進入執行。

+0

我可以更改代碼,但這有點痛苦。大約需要20分鐘才能編譯,另外需要10次才能部署。這就是爲什麼我希望有一種直接的方式。 – ewok

+0

@ewok JonK說的那麼 – BretC

0

與要停止,右鍵單擊並選擇行內的光標「運行至行」(或按CTRL +[R,或任何你可能已經更改了綁定)。這將導致您在調試視圖中選擇的暫停線程繼續執行到該行,然後停止。這應該允許你繞過需要不斷地進/出,並避免使用完整的斷點。

一個告誡,雖然:使用運行時,調試器不知道是否命中你要求的行 - 所以如果它不實際停止,它沒有執行你問它的行停在。

+0

這似乎不是問題的要求。我明白這個問題意味着調試器已經*在* execute(getA(),getB()...)行,並且提交者希望直接進入execute()而不是進入getA( )','getB()'等 –

+0

@ E-Riz所以你把光標放在'execute'的第一行,然後按Run to Line。 – JonK

2

您可以使用Step Into Selection。在斷點處停下來時,將光標置於*您想要進入的方法調用中(在您的示例中,該調用位於execute)。右鍵單擊,並選擇步入選區。這將直接進入任何「選定」(即光標所在的方法)。

默認快捷鍵爲步跳入選擇按Ctrl +在Windows(可能Cmd的 + 在Mac F5)F5