2009-11-08 4 views
4

Avec Delphi j'ai écrit une DLL qui peut être appelée à partir de Java via JNA (Java Native Access). Les méthodes dans cette DLL sont simplement des opérations simples, mais pour une utilisation future et des invocations plus complexes, je voudrais savoir comment je peux utiliser le débogueur Delphi, si la DLL est appelée directement depuis Java (ou depuis l'IDE Java).Comment déboguer une DLL appelée à partir de Java dans Delphi?

+0

Pour déboguer une DLL, vous devez spécifier une application hôte (comme le suggère le message). Vous pouvez le faire via le menu: "Démarrer" - "Paramètre". –

Répondre

4

Je crois que la réponse à cette question serait la même que pour la question Stack Overflow How to debug a DLL file in Delphi. En fait, puisque vous déboguez le fichier DLL de Delphi dans un environnement Delphi, peu importe qui se trouve dans la pile d'appels la plus élevée.

0

Il fonctionne si je définiront l'application hôte (Java) et définir les bons arguments:

  • application hôte: C: \ Program Files \ Java \ jdk1.6.0_14 \ jre \ bin \ java.exe
  • Paramètre: -cp "/path/to/test.jar" junit.textui.TestRunner AppTest

Les arguments de ligne de commande texte JUnit TestRunner sont expliqués ici: http://junit.sourceforge.net/junit3.8.1/javadoc/junit/textui/TestRunner.html

-2

Pourquoi ne pas déboguer la DLL dans Delphi en premier? Il existe un framework de test unitaire pour Delphi appelé DUnit. Vous voudrez toujours écrire des tests d'intégration pour le système complet, mais vous pouvez simuler la dépendance externe dans vos tests unitaires JUnit.

+1

Le vieux proverbe dit que «la preuve du pudding est en train de manger» - en appelant la DLL à partir de Java, il est possible d'analyser les erreurs, par exemple avec de mauvais types de données, des pointeurs, etc. Les tests DUnit peuvent être utilisés comme un filet de sécurité supplémentaire bien sûr. Les tests JUnit couvriront l'intégration de la DLL et des opérations connexes du côté Java, et si ce test d'intégration échoue, il est nécessaire d'analyser le flux de données. – mjn

+0

@mjustin: Je suis tout à fait d'accord que vous voulez des tests d'intégration. Tout ce que je suggère est de tester les classes isolément (tests unitaires) en plus de cela. Vous pouvez avoir votre gâteau et le manger aussi! :) – TrueWill

+2

Si vous vous moquez de la dépendance externe (la DLL), ce n'est plus un très bon test d'intégration. Vous avez essentiellement répondu à la question de savoir comment déboguer une DLL appelée par Java en suggérant de déboguer une DLL * non * appelée par Java. –

Questions connexes