Comment attacher le débogueur à l'étape en natif (C++) code à partir d'un gérés (C#) wrapper?
J'ai un wrapper autour d'une fonction C++ appel que j'appelle le code C#. Comment puis-je attacher un débogueur de Visual Studio à l'étape dans le code C++ natif?
C'est l'enveloppe que j'ai qui appelle GetData() définie dans un fichier C++:
[DllImport("Unmanaged.dll", CallingConvention=CallingConvention.Cdecl,
EntryPoint = "GetData", BestFitMapping = false)]
public static extern String GetData(String url);
Le code plante et je veux enquêter sur les causes profondes.
Grâce,
Nikhil
OriginalL'auteur Nikhil | 2008-09-11
Vous devez vous connecter pour publier un commentaire.
Vérifier l'onglet Débogage sur les propriétés de votre projet page. Il devrait y avoir un "Activer le débogage de code non managé" case à cocher. Cela a fonctionné pour moi lorsque nous avons développé une nouvelle .NET de l'INTERFACE utilisateur pour nos vieux c++ Dll.
Si votre DLL non managée est construit à partir d'un autre projet (alors que les nôtres étaient en train d'être construit à l'aide de VS6) assurez-vous d'avoir la DLL fichier pdb très pratique pour le débogage.
L'autre approche est d'utiliser le C# exe en tant que cible exe pour lancer à partir de la DLL projet, vous pouvez déboguer votre DLL normalement.
OriginalL'auteur
en plus de Lou, conseiller pour démarrer le débogueur, vous pouvez sélectionner les moteurs de débogage sont utilisés lors de la fixation d'un processus existant en cliquant sur " Select...' dans le 'attacher au processus de dialogue et de choisir à la fois "géré code" et "code natif'.
De débogage de cette façon est appelé le débogage en mode mixte. Voir ce post de blog pour quelques conseils.
Je crois que ce n'est pas pris en charge pour la version 64 bits de processus ... mais aimerais avoir tort sur ce point.
OriginalL'auteur
À quiconque, à l'aide de WinDbg:
1>le programme d'Installation symboles
Coup d'oeil à ces commandes. (Aide: dans la console .hh < commande> )
2>chemin de la source
3>Charge le SOS de l'extension de débogage /gérés en mode mixte de programmes.
(Assurez-vous d'avoir l'extension du chemin d'installation correctement)
Ajouter Microsoft.NET\Framework\v2.0.50727 pour x86 à l'aide de-
Définir un point d'arrêt pour le clr à charger.
(F5 /g)
(Attendre ModLoad BP sur mscorwks.dll)
Assurez-vous que vous n'avez pas un double sos extension déjà chargé. Voir:
Nous sommes maintenant prêts à charger le sos de l'extension. 🙂
4> Recharger tous les symboles..
Maintenant vous êtes tous ensemble 🙂
(YMMV)
OriginalL'auteur
Mixte de débogage n'est pas pris en charge, en 64 bits mode (Visual Studio 2008).
OriginalL'auteur