2016-09-17 73 views
1

我正在編寫一個Java API的腳本,它編譯爲類文件,並在我的虛擬機上執行(我無法訪問此虛擬機,並且無法從內部調試我的類文件)。這些腳本需要可觀察的數據才能執行,並且只有在虛擬機內執行完畢後才能正常運行。由於這些類文件的執行方式,據我所知,我無法使用IDE的內置調試器進行調試。java目前在做什麼?

我真的沒有編碼的詞彙,甚至搜索答案到最後一條語句,所以請糾正我,如果我錯了。

不管怎麼說,我已經決定讓我來調試這些腳本的唯一方法是經典的打印語句的方法。這太糟糕了。但它的工作。而且似乎api的整個社區都使用這種方法。

我有,我可以使用反射,因爲他們正在執行從我的課抓取信息的想法,但是這仍然沒有給我訪問,我正在尋找的行由行調試。

我想要做的是逐步監視腳本的執行(虛擬機的每次計算)並存儲關於這些計算的信息(類「bar」中的變量「foo」)變爲4行「soandso」)作爲一種運行緩存,在發生錯誤時轉儲到系統控制檯。

這可能嗎?

+1

你應該考慮一個記錄器。它就像打印語句,除了您可以指定日誌級別(調試,信息,警告,錯誤)並且您可以選擇寫入文件以及stdout(如打印語句)。如果您有權訪問虛擬機,則也可以下載日誌。 – algrebe

+0

您使用哪個IDE不允許調試? – Codebender

+1

不知道我挺蠻跟從這個問題的,Java遠程調試你需要做什麼?至少在Eclipse中這是可行的。 – paisanco

回答

0

你可以看看dynamic proxies

Here是它的一個很好的解釋。

使用動態代理,你可以輸出(日誌,發送郵件,...)被稱爲beeing的方法,並傳遞給方法的參數。

這不完全是你在找什麼,但它可能會幫助你。