2014-02-08 29 views
0

注意:這是關於Java調試接口(JDI)的。如何從線程的堆棧幀中獲取匿名值(Java調試接口/ JDI)

我知道有一個選項可以獲得一個線程的堆棧,並從中獲得所有可見變量及其值的列表。但是,我不知道如何獲得匿名值,即值不是存儲在變量中,而是存儲在堆棧中的「內部」值(或者別的東西?)。

事情是這樣的結果,從IF-評價,比較,等等。例如,讓我們說,我們在我們的代碼有這樣的:

if(array[i] > x) 

如何/在哪裏是一塊數據(即結果:true或false )在運行時存儲以及JDI中的哪些類或方法可以讓我訪問它?

感謝

回答

0

我知道,讓他們無需在字節碼級下降到調試的唯一方法是改變你的代碼將它們分配給一個變量。對不起,這是它設計的方式;如果它沒有名稱,它不一定會持續足夠長的時間才能離開執行堆棧並進入一個變量,並且調試器被設計用於後者,而不是前者。

或請求xi,和(一旦你知道i),array[i]值調試器並執行計算/比較自己。

或者,在這種情況下,只需觀察if需要採用哪個分支。

+0

謝謝keshlam!如果我可能會問後續問題,因爲我對JDI完全陌生:我顯然必須解析/檢查與執行相關的源代碼。我知道JDI可以爲我提供源文件和位置,但我只是爲了不讓自己做不必要的工作:JDI可以直接給我源代碼,還是必須自己從源文件中解析出這些東西?謝謝! – user3237736

相關問題