如何调试JNI / C库?

时间:2009-05-26 14:35:18

标签: java c debugging solaris java-native-interface

我们这里有系统使用Java JNI来调用C库中的函数。一切都在Solaris上运行。

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

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

使用最新Android插件的Eclipse Juno版本支持调试。

How to Use Eclipse to Debug JNI code (Java & C/C++)

答案 2 :(得分:0)

ADT Bundle现在直接支持此功能。任何告诉您除了单击Debug As->之外的其他代码的代码截至2013年12月5日,Android Native Application已过期,除非您使用较旧的开发系统,否则会让您头疼。如果是这种情况,请下载并安装最新的ADT软件包,因为这样可以省去很多麻烦。