2010-12-04 4 views
6

J'ai écrit une application C#, où une grande partie du travail est effectuée dans un back-end C++. Maintenant, j'ai développé activement les deux côtés, et l'itération actuelle de l'extrémité arrière lance une violation d'accès dans une fonction spécifique. Comment puis-je aller déboguer cela? VS ne casse pas les exceptions ou les points d'arrêt dans le code natif, ni affiche la pile d'appel ou les locals du code natif, même si les deux projets sont construits dans la même solution. Je préfère éviter d'avoir à revenir en arrière et à jeter tout mon code natif avec des déclarations de journalisation.Débogage du code natif lors de l'appel à partir de

+0

Quelles versions OS et VS? VS2008 et les versions antérieures ne prennent pas en charge le débogage en mode mixte en mode 64 bits. –

+1

@Steve: .net 4.0 implique VS 2010 – Vlad

Répondre

10

VS déboguera également le code natif si vous activez le débogage en mode mixte (et recompilez votre projet).

Voir l'explication de Microsoft: http://msdn.microsoft.com/en-us/library/kbaht4dh.aspx

+3

Peut confirmer cela. Il va ralentir l'application déboguée d'un ordre de grandeur, donc vous finirez probablement par l'allumer et l'éteindre régulièrement. –

+0

Pouvez-vous expliquer si cela fonctionne sur mon application déployée. Parce que malheureusement mon formulaire Windows est écrasé alors que la forme est proche. J'utilise un fichier dll C++ dans mon projet –

1

En utilisant Visual Studiovous pouvez joindre le débogueur de votre projet C++ natif à votre fonctionnement C# application.

Avant de fixer le débogueur et l'exécution de votre application C#

  1. Ouvrez votre projet C++ natif dans VS.
  2. Assurez-vous que vous êtes configuré en mode débogage. Reconstruisez ensuite votre code C++ natif .

  3. Ajoutez les points d'arrêt où vous souhaitez rompre et commencer à passer le code . Assurez-vous que vous avez placé vos points d'arrêt dans le code auquel l'application C# appelle.

  4. Si votre application C# est le projet de démarrage de votre solution, sous le nœud de débogage dans vos projets pages de propriétés assurez-vous de Cochez la case « Activer le débogage du code natif », puis reconstruire l'ensemble de la solution .

    Sinon, vous devrez reconstruire l'application C# en référence aux DLL nouvellement compilées . Exécutez l'application et attachez le débogueur VS du projet C++ à l'application C#.
    Pour ce faire, allez dans l'onglet Debug -> Attach to Process -> sélectionnez l'application C#.

Questions connexes