我們的系統在這裏使用Java JNI來調用C庫中的函數。一切在Solaris上運行。如何調試JNI/C庫?
我在使用字符串編碼的地方出現問題。用C寫的函數返回一個阿拉伯字符,但是JNI方法接收到一個帶有另一個編碼的字符串。我已經嘗試設置$ NLS_LANG,並以相同的方式編碼vm參數,但沒有任何工作。所以我需要能夠一起調試C代碼和Java JNI。
什麼是調試它的最好方法?
我們的系統在這裏使用Java JNI來調用C庫中的函數。一切在Solaris上運行。如何調試JNI/C庫?
我在使用字符串編碼的地方出現問題。用C寫的函數返回一個阿拉伯字符,但是JNI方法接收到一個帶有另一個編碼的字符串。我已經嘗試設置$ NLS_LANG,並以相同的方式編碼vm參數,但沒有任何工作。所以我需要能夠一起調試C代碼和Java JNI。
什麼是調試它的最好方法?
dbx調試器(Sun Studio的一部分)可以附加到JVM進程,並讓您在Java代碼和本機代碼之間單步執行。代碼名稱爲「jdbx」,儘管它全部是dbx的一部分。它沒有被大力推廣,所以它可能有錯誤。 IDE有兩個調試引擎都處理Java,但使用命令行dbx避免了這些問題時出現問題。
當然,可能有許多更常規的方法來調試您的特定問題,而不必使用可以混合使用Java和C代碼的源代碼級調試。
帶有最新Android Plugins的Eclipse Juno發行版支持調試。
的ADT包現在支持這種直接。除非單擊Debug As-> Android Native Application,否則任何代碼都會在2013年12月5日前過時,並且會導致您頭痛,除非您使用的是較早的開發系統。如果是這種情況,請下載並安裝最新的ADT軟件包,因爲它可以節省很多麻煩。
它包括使用JNI調試常規Java應用程序嗎? – 2014-03-18 15:40:42