Je ne sais pas si cela peut aider, mais j'ai utilisé une méthode native pour définir un drapeau statique dans mon code JNI/C afin d'activer ou de désactiver le suivi du débogage (par défaut, il est désactivé). J'ai ensuite utilisé de bons vieux appels printf() au début de chaque fonction JNI qui ne s'exécutaient que si le drapeau était activé. C'est rudimentaire mais ça marche.
C'est aussi une bonne idée de fournir une sorte de contrôle de version entre la classe Java et ses fonctions JNI. Cela peut être fait avec une fonction JNI qui est appelée à partir d'un bloc d'initialisation de classe statique. Si le client dispose de la mauvaise combinaison de bibliothèques (par exemple, le fichier Jarfile a été mis à jour mais pas la bibliothèque partagée JNI, ou vice versa), vous pouvez lever une exception au moment du chargement de la classe.