2009-04-29 7 views
4

Je suis l'aide de Visual Studio 2008 (sur Windows 2003 Server/32 bits) pour compiler une bibliothèque et après la DLL est produit le "Build personnalisée Étape" -> "Général" exécute une ligne de commande:Comment déboguer une exception d'enregistrement de DLL post-compilation regsvr32?

regsvr32/s/c "($ TargetPath)"

qui génère l'exception:

Une exception non gérée Win32 produite dans regsvr32.exe [212].

Cela déclenche une session de débogage, qui montre remarquablement peu d'informations.

L'exécution de regsvr32 à partir de la ligne de commande dans une fenêtre cmd déclenche une exception (bien que le nombre à la fin soit différent).

N'importe quel pointeur apprécié!

+0

Le nombre entre crochets à la fin du message d'exception est le PID (ID de processus) de regsvr32.exe. – amolbk

Répondre

10

exécutez la DLL dans le débogueur, définissez regsvr32 comme la cible de débogage.

Vous devez placer un point d'arrêt dans la fonction DllRegisterServer.

+0

Hehe, je pensais que ce serait évident! :) – leppie

+0

@leppie: :-) Pas pour moi! J'aurais pensé que la session de débogage automatique montrerait la même information, ce qui n'est pas le cas. –

+0

@gbjbaanb Merci! Cela montre beaucoup plus d'informations ... bien que pour une raison quelconque la fonction DllRegisterServer ne semble pas être appelée. –

-1

Votre code devrait mettre en œuvre DllRegisterServer, ajoutez un MessageBox là, et lorsque vous exécutez regsvr32 il doit être frappé, attacher au processus à ce moment-

+0

Non. Comme je l'ai dit dans les commentaires à la réponse acceptée (en avril 2009!), 'DllRegisterServer' n'a jamais été appelé, donc votre solution ne fonctionnerait pas. –

Questions connexes