2009-05-26 5 views
8

Nous avons ici un système qui utilise Java JNI pour appeler une fonction dans une bibliothèque C. Tout fonctionne sous Solaris.Comment déboguer la bibliothèque JNI/C?

J'ai quelque part un problème avec le codage de chaîne. Un caractère arabe est renvoyé par la fonction écrite en C, mais les méthodes JNI reçoivent une chaîne avec un autre codage. J'ai déjà essayé de mettre $ NLS_LANG, et le paramètre vm pour encoder de la même façon, mais rien n'a fonctionné. Je dois donc pouvoir déboguer le code C et le Java JNI ensemble.

quelle est la meilleure façon de le déboguer?

Répondre

3

Le débogueur dbx (partie de Sun Studio) peut attacher à un processus de machine virtuelle Java et vous laisser seule étape entre le code Java et du code natif. La fonctionnalité est passée par le nom de code "jdbx", bien que cela fasse partie de dbx. Il n'a pas été fortement promu, donc il pourrait avoir des bugs. Il y avait des problèmes lorsque l'EDI avait deux moteurs de débogage qui traitaient Java, mais en utilisant la ligne de commande dbx évite ces problèmes.

Bien sûr, il y a probablement beaucoup de façons plus conventionnelles pour déboguer votre problème sans nécessairement utiliser le débogage au niveau source qui peut mélanger le code Java et C.

0

Le Bundle ADT prend désormais en charge ce directement. Tout code qui vous demande de faire autre chose que de cliquer sur Déboguer en tant qu'application Android native est obsolète depuis le 05/12/2013 et vous causera des maux de tête, sauf si vous utilisez un système de développement plus ancien. Si c'est le cas, téléchargez et installez le dernier paquet ADT car cela vous évitera beaucoup de problèmes.

Questions connexes