Bonjour, j'aimerais savoir comment faire pour debbuger une dll ISAPI créé avec un projet VC++ 6 ou 2005 pour la tester et la "servir" avec le serveur Apache. Merci d'avance.
Version imprimable
Bonjour, j'aimerais savoir comment faire pour debbuger une dll ISAPI créé avec un projet VC++ 6 ou 2005 pour la tester et la "servir" avec le serveur Apache. Merci d'avance.
Bonjour,
Deux solutions :
:arrow: Debugger le serveur Apache et attendre les appels à la DLL. (en pratique, vu la taille du programme et l'impossibilité de savoir à quel moment précis sont appelées les fonctions de la DLL, c'est la moins viable des solutions).
:arrow: Mettre un DebugBreak() (ou __debugbreak) dans les fonctions de la DLL que l'on souhaite tracer, recompiler la DLL en mode debug et démarrer le serveur Apache. Le DebugBReak() va faire crasher la DLL (et par extension le serveur).
S'assurer que VS 2005 est le debuggeur JIT et s'attacher au processus Apache. Le mieux est alors d'avoir les symboles (fichier *.pdb) de la DLL correctement chargés (sinon la pile d'appel est illisible ou fausse ce qui n'aide pas à tracer).
Une fois que le debuggeur s'est attaché au processus, on se retrouve à l'endroit exact où est situé le DebugBreak(). Il n'y a plus qu'a tracer le code.
C'est pénible mais la seule solution pour un programme aussi touffu.
P.S : Pour DebugBreak(), voir : http://msdn2.microsoft.com/en-us/lib...ey(VS.80).aspx
En fait, je me suis mal exprimée : le pb est que je n'arrive pas à exécuter mon projet. Dans Visual Studio, quand je tape F5 ou Execute du menu Build, une fenêtre intitulée "Executable for Debug Session" s'ouvre et demande d'indiquer l'executable File Name. Et là je ne sais pas quoi mettre.:(
non ce n'est pas comme ça...
tu doit attacher le debugger a un process existant .
la dll lue par apache doit être la version debug.
Pour construire et tester la dll dans Visual Studio pour IIS il faut spécifier, dans la catégorie Général de l'onglet Debug de la rubrique Project Settings :
\winnt\system32\inetsrv\inetinfo.exe pour Executable for Debug Session
-e W3Svc pour Program arguments.
Qu'en est-il si on utilise Apache ? :roll:
Merci.