2012-12-28 2 views
5

J'ai créé un projet visual c++ 6.0 dll et je l'utilise depuis mon code c#. Maintenant, je veux déboguer le dll mais je ne suis pas capable de le faire.Comment déboguer le C++ dll du projet C#?

Je choisis l'option suivante pour le faire:

  • mettre le point de rupture dans mon visual c++ code du projet.
  • créez la DLL et copiez-la dans le répertoire de mon projet c#.
  • Maintenant, je construis mon projet c# et DLL fonctionne bien (la méthode appelle parfaitement). Je veux maintenant déboguer le dll.
  • Je suis un blog et ouvre le projet c++ et choisis le Attach to process de vc++.
  • mais je n'arrive pas à trouver le processus en cours d'exécution du projet visual c#, alors qu'il est disponible au gestionnaire de tâches.

Dans mon c# solution de projet, j'ai deux projets à savoir

  • service web (i appelé la méthode dll au moment de l'accès à une URL)
  • Un autre est webform application qui démarre les services Web .

Maintenant s'il vous plaît aidez-moi comment dois-je déboguer ma DLL. J'ai suivi tant de blogs mais tous se concentrent sur la méthode Attaching process qui ne fonctionne pas dans ma condition. Que devrais-je faire?

Répondre

9

Vous devez activer le débogage non géré, il n'est pas activé par défaut dans les deux scénarios car votre programme principal est géré.

Vous le faites dans votre projet C# avec Projet> Propriétés> onglet Débogage> cochez la case "Activer le débogage de code non géré".

Vous le faites avec Tools> Attach to Process en cliquant sur le bouton Select. Choisissez le bouton radio "Déboguer ces types de code" et cochez à la fois Géré et Natif. Vous devrez peut-être utiliser uniquement natif si votre processus est 64 bits.

Définissez un point d'arrêt dans le code source de la DLL et assurez-vous d'écrire du code C# qui exécute la fonction DLL. Si vous avez encore des problèmes pour obtenir un point d'arrêt, utilisez Debug> Windows> Modules et vérifiez que vous voyez la DLL dans la liste des modules. Obtenez des informations de dépannage supplémentaires en cliquant dessus avec le bouton droit de la souris, puis sélectionnez Informations de chargement de symboles. Ce qui montre une trace de l'endroit où le débogueur a cherché le fichier PDB.

+0

J'ai essayé de gérer le débogage mais comme je dis que j'ai un projet de service Web et une application de formulaire dans ma solution. Je l'ai activé dans mon deuxième projet mais je n'en ai trouvé aucune comme première option dans le premier projet –

+0

Veuillez visiter: https://dl.dropbox.com/u/20476478/Untitled.png –

+0

Si cela ne vous dérange pas alors pouvons-nous avoir une conversation pendant 5 minutes? –

0

Vous pouvez ajouter un projet C++ à votre solution C# et ajouter une référence directement au projet (pas dll), vous n'aurez donc pas besoin de copier la DLL. Après cela, lancez simplement le débogage normal (F5) de votre projet C#, et les points d'arrêt fonctionneront aussi pour le projet C++. De cette façon sera très confortable pour le débogage. J'ai essayé un tel débogage et n'ai pas changé d'autres paramètres.

+0

mais pour ce faire, je dois changer tout le flux de code écrit en C# projet –

+0

Je ne suis pas sûr pourquoi vous avez besoin de changer le flux de code pour cela, vous devez changer juste référence DLL à la référence du projet. Ou quelque chose me manque? – SergeyS

+0

oui il y a un problème car j'ai un '.lib' associé au projet visuel C++ –

Questions connexes