如何调试JNI/C库?

hoo*_*ray 8 c java debugging java-native-interface solaris

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

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

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

Chr*_*lle 3

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

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