2010-06-01 4 views
1

J'ai un projet dans VC++ 6.0 où il y a un exe et un Dll COM InProc. Je veux être en mesure de placer un point d'arrêt quelque part dans la DLL COM InProc, mais VC++ ne me permettra pas de définir un point d'arrêt.Débogage InProc COM Dll

J'ai le code source pour cette DLL, mais je ne peux pas comprendre comment je peux placer un point d'arrêt dans le code et le déboguer?

Quelqu'un peut-il m'aider?

+0

Avez-vous le fichier .pdb de la DLL COM dans le même dossier que la DLL? – sharptooth

+0

le plus probable il pourrait être dans un autre endroit –

+1

Il devrait être dans le même dossier et il devrait être de la même compilation. – sharptooth

Répondre

0
  1. Fixer au processus
  2. Ouvrez Projet-> Paramètres (Alt + F7)
  3. Ouvrir l'onglet Debug, catégorie DLLs supplémentaires
  4. AJOUTEZ in-process serveur DLL
  5. Enregistrer fichier .opt la fermeture du débogueur

De cette façon, la prochaine fois que vous attachez à traiter ou ouvrir manuellement le fichier .opt , votre DLL de serveur in-process est chargée, son PDB est analysé, les derniers fichiers open source sont chargés, les points d'arrêt sont chargés.

La raison pour laquelle le paramètre "dlls supplémentaires" est nécessaire est que le serveur in-process n'est chargé que lorsque son instance est CoCreated. Ainsi, le débogueur ne charge pas son fichier PDB et les fichiers source sont traités comme des fichiers texte inconnus, de sorte que les points d'arrêt dans ces fichiers deviennent inactifs (blancs).

0

Deux choses que vous pouvez regarder dans

  1. Décocher Exigez fichiers source pour correspondre exactement à la version originale dans les options de débogage de dialogue
  2. Si cela échoue, compiler le DLL nouveau (de préférence avec des optimisations désactivées /Od) et utilisez la nouvelle DLL avec son fichier PDB.
0

Je ne sais pas si cela va fonctionner dans VC6 mais vous pouvez essayer _asm int 3 où vous voulez que le code pour briser, cela devrait provoquer un point d'arrêt dans votre code et vous permet de déboguer.

1

Cela fait un certain temps que j'ai travaillé avec COM mais IIRIC, dans votre projet COM, configurez votre exécutable comme application de lancement. Il devrait travailler (désolé, je n'ai pas VC++ 6.0 installé plus ici :().

Si cela ne fonctionne pas, vous pouvez essayer d'attacher le débogueur à l'application en cours d'exécution.

Dans les deux cas assurez-vous d'avoir des informations complètes de débogage dans votre serveur COM.

Hope this helps.

Questions connexes