2011-08-03 47 views
0

當我在調試模式下啓動JVM時,事情自然會變慢。有沒有辦法在JVM中選擇性地調試單個應用程序(或幾個應用程序)?

有沒有辦法說明我只對單個應用程序進行調試,而不是對這個JVM上運行的15個應用程序(這裏是一個數字)進行調試。

有利於這可能使事情更快特別是當我們已經從日誌和其他跟蹤工具知道,與一個單一的應用程序可能問題

欣賞的想法和意見

感謝 Manglu

的方法
+0

謝謝;-) Vineet –

回答

2

我會在這裏做很多假設,尤其是當你的問題缺少大量的上下文信息時。

有沒有辦法指出,我很感興趣,只有調試一個應用程序,而不是15(這裏做了一些),在這個JVM上運行的應用程序。

首先,我會假設你正在試圖在生產中做到這一點。如果是這樣,退一步想想可能會出現什麼問題。您可能會放置一個斷點,但會將到達該斷點的所有請求排隊,並且這樣做會將任何SLA要求拋出窗口。而且,如果您的應用程序正在處理任何敏感數據,則您必須看到您不應該看到的內容。其次,即使你在共享的開發或測試環境中這樣做,這也是一個壞主意。特別是如果不確定你在找什麼。如果你正在尋找同步錯誤,那麼這可能是錯誤的方法;其他線程顯然會共享您正在閱讀的數據,並使其不太可能找到罪魁禍首。

最好的選擇是打開應用程序中的跟蹤日誌記錄。這當然是沒用的,除非你在應用程序中嵌入了適當的記錄器調用(尤其是跟蹤方法參數和返回值)。通過您可以使用的跟蹤日誌,您應該能夠創建一個集成或單元測試,以在您的本地開發人員安裝中重現確切的失敗情況;這是你應該進行調試的地方。有時候,即使是功能測試也足夠了。

一般來說沒有更快的方法,因爲它根本不適用於所有情況。您可以在任何其他環境中建立選定數量的斷點,但除非您知道只有您的請求被調試進程攔截,否則它不值得麻煩。

+0

嗨Vineet,這不是在生產環境。我應該讓自己清楚。我無法在生產環境中的調試環境中運行JVM。當我在今天早些時候對問題進行故障排除時,我一直在想這個問題,並且認爲在調試模式下使用某些組件,而其他組件正常運行可能會使生活更簡單 – Manglu

+0

您無法真正在調試模式下運行一個應用程序,模式。調試模式會切換JVM中的某些功能,因此它是JVM範圍內的開銷。在最好的情況下,你可以限制自己在局部區域放置斷點,就像我在回答中所述。 –

+0

嗨維尼,這也是我的理解。有了OSGi模塊(以及類似的方法),我認爲可能有一些聰明的方法來劃分調試方面,而不是保留整個JVM。 – Manglu

相關問題