2009-05-26 5 views
8

Qui abbiamo un sistema che utilizza Java JNI per chiamare una funzione in una libreria C. Tutto funziona su Solaris.Come eseguire il debug della libreria JNI/C?

Ho un problema da qualche parte con la codifica delle stringhe. Un carattere arabo viene restituito dalla funzione scritta in C, ma i metodi JNI ricevono una stringa con un'altra codifica. Ho già provato a impostare $ NLS_LANG e il parametro vm per la codifica allo stesso modo, ma niente ha funzionato. Quindi ho bisogno di essere in grado di eseguire il debug del codice C e del JNI Java insieme.

qual è il modo migliore per eseguirne il debug?

risposta

3

Il debugger dbx (parte di Sun Studio) può essere collegato a un processo JVM e consente di eseguire un singolo passaggio tra codice Java e codice nativo. La funzionalità è passata dal nome in codice "jdbx", sebbene faccia tutto parte di dbx. Non è stato fortemente pubblicizzato, quindi potrebbe avere bug. C'erano problemi quando l'IDE aveva due motori di debug che gestivano Java, ma l'uso della riga di comando dbx evita questi problemi.

Ovviamente, ci sono probabilmente molti altri modi convenzionali per eseguire il debug del problema specifico senza necessariamente utilizzare il debug del livello di origine che può mescolare il codice Java e C.

0

L'ADT Bundle ora supporta direttamente. Qualsiasi codice che ti dice di fare qualcosa di diverso da fare clic su Debug come-> Android Native Application è obsoleto a partire dal 05/12/2013 e causerà mal di testa a meno che tu non stia utilizzando un vecchio sistema di sviluppo. In questo caso, scarica e installa l'ultimo bundle ADT perché risparmierà un sacco di problemi.