2009-05-26 71 views
8

我们的系统在这里使用Java JNI来调用C库中的函数。一切在Solaris上运行。如何调试JNI/C库?

我在使用字符串编码的地方出现问题。用C写的函数返回一个阿拉伯字符,但是JNI方法接收到一个带有另一个编码的字符串。我已经尝试设置$ NLS_LANG,并以相同的方式编码vm参数,但没有任何工作。所以我需要能够一起调试C代码和Java JNI。

什么是调试它的最好方法?

回答

3

dbx调试器(Sun Studio的一部分)可以附加到JVM进程,并让您在Java代码和本机代码之间单步执行。代码名称为“jdbx”,尽管它全部是dbx的一部分。它没有被大力推广,所以它可能有错误。 IDE有两个调试引擎都处理Java,但使用命令行dbx避免了这些问题时出现问题。

当然,可能有许多更常规的方法来调试您的特定问题,而不必使用可以混合使用Java和C代码的源代码级调试。

0

的ADT包现在支持这种直接。除非单击Debug As-> Android Native Application,否则任何代码都会在2013年12月5日前过时,并且会导致您头痛,除非您使用的是较早的开发系统。如果是这种情况,请下载并安装最新的ADT软件包,因为它可以节省很多麻烦。