Java 如何调试JNI/C库?

Java 如何调试JNI/C库?,java,c,debugging,solaris,java-native-interface,Java,C,Debugging,Solaris,Java Native Interface,我们这里有一个系统,它使用JavaJNI调用C库中的函数。一切都在Solaris上运行 我在某个地方遇到了字符串编码的问题。用C编写的函数返回一个阿拉伯字符,但JNI方法接收另一种编码的字符串。我已经尝试过设置$NLS_LANG,并使用相同的编码方式设置vm参数,但没有任何效果。所以我需要能够一起调试C代码和JavaJNI 调试它的最佳方法是什么?dbx调试器(Sun Studio的一部分)可以连接到JVM进程,并允许您在Java代码和本机代码之间单步执行。该功能的代码名为“jdbx”,尽管它都

我们这里有一个系统,它使用JavaJNI调用C库中的函数。一切都在Solaris上运行

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

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

dbx调试器(Sun Studio的一部分)可以连接到JVM进程,并允许您在Java代码和本机代码之间单步执行。该功能的代码名为“jdbx”,尽管它都是dbx的一部分。它还没有得到大力推广,所以可能有bug。当IDE有两个调试引擎都处理Java时会出现问题,但是使用命令行dbx可以避免这些问题


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

EclipseJuno版本和最新的Android插件支持调试


ADT捆绑包现在直接支持此功能。除了单击Debug As->Android本机应用程序之外,任何告诉您执行其他操作的代码从2013年12月5日起已经过时,除非您使用的是旧的开发系统,否则会让您头疼。如果是这样的话,请下载并安装最新的ADT包,因为这将节省很多麻烦。

它是否包括调试使用JNI的常规java应用程序?