2012-10-30 47 views
3

是否有任何調試器可以幫助調試Java JNI程序以及C庫?JAVA JNI C調試器

我應該能夠從Java的靜態主要void main調試程序,並繼續調試並在本地c函數中放置斷點,然後在控件從C傳輸到Java之後繼續在Java中進行調試。

+2

看看這個 http://stackoverflow.com/questions/2762916/how-to-use-eclipse-to-debug-jni-code-java-c-c –

回答

4

Java虛擬機調試器與本機代碼調試器有很大不同。目前還沒有這樣的MATURE解決方案作爲同一個調試器,能夠無縫地從Java到本地代碼並返回。雖然這是一個非常刺激的問題,這使得一些聰明的人試圖開發這樣的解決方案,但毫無疑問,涉及大量無法想象的問題。我個人做下列方式:

  1. 開始在調試模式下您的Java代碼,並把一個斷點在第一個原生叫你有興趣你甚至可以實現一個靜態的本地通話,這是不行的。任何重要的事情,但將使你儘快打破。
  2. 啓動本機調試器。 這絕對可以是Eclipse的相同實例,具有兩個先決條件:您安裝了CDT,並且您的本機代碼以某種方式編譯,CDT可以理解調試信息。附加到運行Java代碼的java(w.exe)進程。在本地代碼中放置一個斷點。
  3. 無論何時您需要通過JNI接口進行轉換,都可以(或需要)將斷點儘可能靠近調用進入/退出。
+0

我在同一條船上。我實際上是SWT開發者,(Eclipse的界面在SWT中)。在SWT中,有約30個地方將JNI/C返回給java。我們找到的唯一解決方案是添加一個被所有回調調用的方法,並在那裏設置一個斷點。 –