2009-05-26 17 views
8

Tenemos un sistema aquí que usa Java JNI para llamar a una función en una biblioteca C. Todo funcionando en Solaris.¿Cómo depurar la biblioteca JNI/C?

Tengo un problema en alguna parte con la codificación de cadenas. Un carácter árabe es devuelto por la función escrita en C, pero los métodos JNI reciben una cadena con otra codificación. Ya intenté configurar $ NLS_LANG y el parámetro vm para codificar de la misma manera, pero nada funcionó. De modo que necesito poder depurar el código C y Java JNI juntos.

¿cuál es la mejor manera de solucionarlo?

Respuesta

3

El depurador dbx (parte de Sun Studio) se puede conectar a un proceso de JVM y le permite un paso entre el código de Java y el código nativo. La funcionalidad pasó por el nombre en clave "jdbx", aunque es parte de dbx. No ha sido muy promocionado, por lo que podría tener errores. Hubo problemas cuando el IDE tenía dos motores de depuración que manejaban Java, pero el uso de la línea de comando dbx evita esos problemas.

Por supuesto, es probable que haya muchas formas más convencionales para depurar su problema específico sin necesidad de utilizar una depuración a nivel de fuente que pueda mezclar el código Java y el código C.

0

El ADT Bundle ahora soporta esto directamente. Cualquier código que indique que debe hacer algo distinto de hacer clic en Depurar como-> Aplicación nativa de Android está desactualizado a partir del 12/05/2013 y le causará problemas si no está utilizando un sistema de desarrollo anterior. Si ese es el caso, descargue e instale el último paquete ADT porque ahorrará muchos problemas.