Partager via


Procédure pas à pas : débogage d'une solution qui inclut du code managé et du code natif

Mise à jour : novembre 2007

Cette procédure pas à pas fournit des étapes permettant de déboguer une solution qui inclut des composants .NET Compact Framework à la fois managés et natifs. Visual Studio ne prend pas en charge le débogage d'interopérabilité des applications Smart Device en tant que tel. Cela signifie que vous ne pouvez pas attacher simultanément des débogueurs natifs et managés.

La technique recommandée pour déboguer une solution qui incorpore des éléments à la fois natifs et managés consiste à attacher le débogueur requis par une section donnée, par exemple une section managée, à le détacher, puis à attacher l'autre débogueur lorsque ce dernier est requis. Vous pouvez répéter ces étapes d'attachement/détachement autant de fois que nécessaire pour évoluer pas à pas dans votre programme.

Remarque :

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.

Cette procédure pas à pas a été écrite à l'aide de Paramètres de développement Visual C#. Elle contient les sections suivantes :

  • Activation de l'attachement du débogueur managé

  • Démarrage de l'application

  • Définition d'un point d'arrêt au sein du code natif

  • Attachement du débogueur natif

  • Exécution jusqu'au point d'arrêt natif

  • Attachement du débogueur managé

  • Définition d'un point d'arrêt au sein du code managé

  • Exécution jusqu'au point d'arrêt managé

  • Conclusion

Composants requis

Cette procédure pas à pas repose sur la solution développée lors d'une autre procédure pas à pas, Procédure pas à pas : Hello World : exemple COM Interop pour les appareils de type Smart Device. Assurez-vous que cette procédure pas à pas a bien été générée et exécutée.

Activation de l'attachement du débogueur managé

Par défaut, les appareils, y compris les émulateurs, n'autorisent pas l'attachement du débogueur managé à des processus qui sont déjà en cours d'exécution. L'attachement du débogueur managé à un processus déjà en cours d'exécution constitue une situation que vous rencontrez en général dans les solutions Smart Device qui intègrent à la fois du code managé et du code natif.

Votre première étape consiste à configurer l'appareil pour qu'il autorise l'attachement du débogueur managé à un processus déjà en cours d'exécution. Pour ce faire, définissez une clé de Registre sur l'appareil.

Remarque :

La définition de la clé affecte uniquement l'attachement à des processus managésdéjà en cours d'exécution. Elle n'affecte pas le lancement d'un projet à l'aide de la commande Démarrer avec débogage (F5). Toutefois, si vous procédez à un détachement après avoir utilisé Démarrer avec débogage, vous aurez besoin de ce processus pour effectuer un nouveau rattachement et lancer un autre débogage.

Pour activer le débogueur managé afin de l'attacher à un processus en cours d'exécution

  1. Dans le menu Démarrer de Windows, pointez sur Tous les programmes, puis sur Microsoft Visual Studio 2008, sélectionnez Outils de contrôle à distance Visual Studio, puis cliquez sur Remote Registry Editor.

  2. Dans la fenêtre Sélectionner un appareil Windows CE, développez Windows Mobile 5.0 Pocket PC SDK, puis cliquez sur Windows Mobile 5.0 Pocket PC Emulator. Il s'agit de l'appareil cible pour cette procédure pas à pas.

  3. Cliquez sur OK.

    La fenêtre de progression Connexion à l'appareil s'ouvre, suivie de l'ouverture de Microsoft Device Emulator et de Windows CE Remote Registry Editor.

  4. Dans l'Éditeur du Registre, développez Windows Mobile 5.0 Pocket PC Emulator, puis créez la clé suivante : HKEY_LOCAL_MACHINE\SOFTWARE\Microsot\.NETCompactFramework\Managed Debugger.

    Pour créer la clé, cliquez avec le bouton droit sur .NETCompactFramework, pointez sur Nouveau, puis cliquez sur Clé.

    Remarquez la présence d'un espace entre "Managed" et "Debugger".

  5. Créez un DWORD nommé AttachEnabled.

    Pour créer le DWORD, cliquez avec le bouton droit sur Débogueur managé, pointez sur Nouveau, puis cliquez sur Valeur DWORD.

  6. Affectez à Nom la valeur AttachEnabled et à Valeur la valeur 1.

    Remarque :

    La définition de cette clé de débogage d'appareil réduit considérablement les performances. Lorsque vous ne procédez à aucun débogage, désactivez cette fonctionnalité en réinitialisant la valeur de donnée à 0.

  7. Laissez Microsoft Device Emulator ouvert pour les étapes restantes afin de conserver le paramétrage du Registre. Vous pouvez fermer l'Éditeur du Registre.

Lancement de l'application

L'étape suivante consiste à lancer l'application InteropSolution.

Pour démarrer l'application

  1. Ouvrez la solution que vous avez créée dans Procédure pas à pas : Hello World : exemple COM Interop pour les appareils de type Smart Device.

    Assurez-vous que Windows Mobile 5.0 Pocket PC Emulator figure bien dans la zone Appareil cible de la barre d'outils.

  2. Dans le menu Déboguer de Visual Studio, cliquez sur Démarrer le débogage ou appuyez sur la touche F5.

    Cette étape déploie immédiatement le projet natif, HelloCOMObject, dans l'émulateur sans aucune intervention supplémentaire de l'utilisateur.

  3. Lorsque la boîte de dialogue Déployer SayHello s'ouvre, sélectionnez Windows Mobile 5.0 Pocket PC Emulator, puis cliquez sur Déployer.

    Cette étape déploie le projet managé.

    L'application s'ouvre dans l'émulateur. Ne cliquez pas encore sur le bouton.

Définition d'un point d'arrêt au sein du code natif

L'étape suivante consiste à définir un point d'arrêt dans le code natif afin de préparer l'attachement du débogueur natif.

Pour définir un point d'arrêt dans le code natif

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Hello.cpp, puis cliquez sur Afficher le code.

  2. Insérez un point d'arrêt sur la ligne qui commence par *text en cliquant dans la marge de gauche de l'éditeur de code.

    Le symbole du point d'arrêt se présente sous la forme d'un cercle vide avec un point d'exclamation, indiquant que le point d'arrêt ne peut pas se résoudre actuellement. Ce comportement est dû à l'absence des symboles et des sources appropriés à ce stade.

  3. Dans le menu Déboguer de Visual Studio, pointez sur Fenêtres, puis cliquez sur Modules.

    La fenêtre Modules indique tous les modules chargés à ce stade, par exemple, l'application SayHello.exe managée. Remarquez que la HelloCOMObject.dll native n'a pas encore été chargé, parce que vous n'avez pas encore cliqué sur le bouton dans l'application.

Attachement du débogueur natif

L'étape suivante consiste à détacher le débogueur managé afin de pouvoir attacher le débogueur natif. Rappelez-vous que les deux débogueurs ne peuvent pas être attachés simultanément dans le cadre de projets Smart Device. Voici les étapes à suivre chaque fois que vous serez amené à passer du débogueur natif au débogueur managé.

Pour attacher le débogueur natif

  1. Dans le menu Déboguer de Visual Studio, cliquez sur Détacher tout.

    Cette étape détache le débogueur managé, mais autorise la poursuite de l'exécution de l'application.

  2. Dans le menu Déboguer, cliquez sur Attacher au processus.

  3. Dans la zone Transport, sélectionnez Smart Device.

  4. Pour remplir la zone Qualificateur, cliquez sur Parcourir.

  5. Dans la boîte de dialogue Se connecter à l'appareil, sélectionnez Windows Mobile 5.0 Pocket PC Emulator, puis cliquez sur Se connecter.

  6. Pour remplir la zone Attacher à, cliquez sur Sélectionner.

  7. Dans la boîte de dialogue Sélectionner le type de code, sélectionnez Déboguer ces types de codes, désactivez la case à cocher Managé, activez la case à cocher Natif, puis cliquez sur OK.

  8. Dans la zone Processus disponibles, sélectionnez SayHello.exe, puis cliquez sur Attacher.

    Le débogueur natif est à présent attaché.

Exécution jusqu'au point d'arrêt natif

Vous êtes maintenant prêt à progresser jusqu'au point d'arrêt que vous avez établi dans le code natif. Lorsque vous examinez à nouveau la fenêtre Modules, vous pouvez désormais y voir les modules natifs. Toutefois, la DLL HelloCOMObject.dll n'est pas encore chargée car vous n'avez pas encore cliqué sur button1.

Remarque :

Si vous avez exécuté cette procédure pas à pas auparavant, les symboles de débogage sont peut-être déjà chargés. Vous pouvez alors ignorer ces étapes. Dans la négative, la section suivante fournit les étapes nécessaires à leur chargement.

Pour faire progresser l'exécution jusqu'au point d'arrêt natif

  1. Sur le formulaire Microsoft Device Emulator, cliquez sur button1.

    Le message « Hello World! » s'affiche sur le formulaire, et hellocomobject.dll apparaît dans la fenêtre Modules.

    Si la colonne État du symbole pour hellocomobject.dll n'affiche pas Les symboles ont été chargés, effectuez les étapes suivantes.

    1. Cliquez avec le bouton droit sur hellocomobject.dll, puis cliquez sur Charger les symboles.

    2. Dans la boîte de dialogue Rechercher des symboles, naviguez vers InteropSolution\HelloCOMObject\Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\Debug\HelloCOMObject.pdb.

    3. Cliquez sur Ouvrir.

      L'affichage de la colonne État du symbole passe à Les symboles ont été chargés et l'indicateur du point d'arrêt affiche maintenant le point d'arrêt comme résolu.

  2. Dans le formulaire Microsoft Device Emulator, cliquez sur OK dans la fenêtre Hello World!, puis cliquez à nouveau sur button1.

    L'indicateur de point d'arrêt indique que l'exécution s'est arrêtée au point d'arrêt.

  3. Dans le menu Déboguer, cliquez sur Pas à pas détaillé ou appuyez sur F11.

    Remarquez que l'exécution passe à la ligne suivante. Ce comportement indique que vous pouvez à présent progresser pas à pas dans la partie native de votre solution.

Attachement du débogueur managé

L'étape suivante consiste à détacher le débogueur natif afin de pouvoir attacher le débogueur managé. Rappelez-vous que les deux débogueurs ne peuvent pas être attachés simultanément dans le cadre de projets Smart Device. Voici les étapes à suivre chaque fois que vous serez amené à passer du débogueur managé au débogueur natif.

Pour attacher le débogueur managé

  1. Dans le menu Déboguer de Visual Studio, cliquez sur Détacher tout.

    Cette étape détache le débogueur natif, mais l'exécution de l'application se poursuit.

  2. Dans le menu Déboguer, cliquez sur Attacher au processus, et assurez-vous que la zone Transport contient Smart Device.

  3. Remplissez la zone Qualificateur en cliquant sur Sélectionner, puis en sélectionnant Windows Mobile 5.0 Pocket PC Emulator. Cliquez ensuite sur Se connecter.

  4. Pour remplir la zone Attacher à, cliquez sur Sélectionner, puis sélectionnez Déboguer ces types de codes. Activez ensuite la case à cocher Managé, désactivez la case à cocher Natif, puis cliquez sur OK.

    Si un message s'affiche et vous rappelle que le débogage natif et le débogage managé sont incompatibles, cliquez sur OK.

  5. Dans la zone Processus disponibles, sélectionnez SayHello.exe, puis cliquez sur Attacher.

    Le débogueur managé est à présent attaché.

Définition d'un point d'arrêt au sein du code managé

L'étape suivante consiste à définir un point d'arrêt dans le code managé afin de préparer l'attachement du débogueur managé.

Pour définir un point d'arrêt dans le code managé

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Form1.cs, puis cliquez sur Afficher le code.

  2. Insérez un point d'arrêt sur la ligne string text;.

Exécution jusqu'au point d'arrêt managé

Vous êtes maintenant prêt à progresser jusqu'au point d'arrêt que vous avez établi dans le code managé.

Pour faire progresser l'exécution jusqu'au point d'arrêt managé

  • Dans la fenêtre Microsoft Device Emulator, cliquez sur button1.

    L'exécution s'arrête sur le point d'arrêt.

Conclusion

Pour des raisons de performances, veillez à réinitialiser la clé de Registre de l'appareil à 0 lorsque vous n'avez plus besoin d'attacher le débogueur managé à un processus en cours d'exécution.

Voir aussi

Tâches

Comment : créer des attachements à des processus smart device managés

Comment : modifier les paramètres du Registre Smart Device

Autres ressources

Débogage des projets Smart Device

Débogage dans Visual Studio