Partager via


Modifier et continuer (C++)

Vous pouvez utiliser le rechargement à chaud, précédemment appelé Edit and Continue, dans les projets C++. Pour plus d’informations sur les limitations de la fonctionnalité, consultez Modifications de code prises en charge (C++).

L’option du compilateur /Zo (Débogage optimisé amélioré) ajoute des informations supplémentaires aux fichiers .pdb (symboles) pour les fichiers binaires compilés sans l’option /Od (Désactiver (Débogage)).

L’option /Zo désactive Edit and Continue, comme décrit dans How to : Debug Optimized Code.

Activer ou désactiver le rechargement à chaud

Vous pouvez désactiver l’appel automatique du rechargement à chaud si vous apportez des modifications au code que vous ne souhaitez pas appliquer pendant la session de débogage actuelle. Vous pouvez réactiver le rechargement automatique à chaud en fonction des besoins.

Important

Pour connaître les paramètres de build requis et d’autres informations sur la compatibilité des fonctionnalités, consultez C++ Modifier et continuer dans Visual Studio 2015 Update 3.

  1. Si vous êtes actuellement dans une session de débogage, arrêtez le débogage (Maj + F5).
  1. Ouvrez le volet Options des outils>, et développez la section Tous les paramètres de >>.

  2. Pour activer le rechargement à chaud au démarrage du débogueur attaché (F5), cochez la case Activer le rechargement à chaud dans le volet droit.

    Après avoir coché la case, vous pouvez configurer les options suivantes :

    Option Rechargement à chaud Descriptif Par défaut
    Appliquer automatiquement des modifications sur continuer (natif uniquement) Applique les modifications lorsque vous poursuivez avec le débogueur attaché (F5). Enabled
    Avertir du code obsolète Active un avertissement lorsque le débogueur rencontre le code qui a été modifié, mais ne peut pas être appliqué immédiatement. Enabled
    Activer quand le débogage n’est pas activé Active le rechargement à chaud lors du démarrage sans le débogueur attaché (Ctrl + F5). Enabled
    Appliquer lors de l'enregistrement du fichier Applique les modifications lorsque le fichier est enregistré. Disabled
    Journalisation détaillée Définissez le niveau de journalisation lorsque le rechargement à chaud est activé. Choisissez parmi Minimal, Détaillé ou Diagnostic. Minimal
  1. Ouvrez la boîte de dialogue Outils>Options, et développez la section Débogage>Rechargement à chaud .NET/C++.

  2. Sélectionnez une ou toutes les options suivantes pour activer la fonctionnalité :

    • Activer le rechargement à chaud : active le rechargement à chaud au démarrage du débogueur attaché (F5).

    • Activer le rechargement à chaud lors du démarrage sans débogage : active le rechargement à chaud lors du démarrage sans le débogueur attaché (Ctrl + F5).

    • Activer le rechargement à chaud sur l’enregistrement de fichier : active le rechargement à chaud lorsque le fichier est enregistré.

    • Niveau de verbosité de la journalisation : définissez le niveau de journalisation lorsque le rechargement à chaud est activé. Choisissez parmi Minimal (par défaut), Détaillé ou Diagnostic.

    La modification de ces paramètres affecte tous les projets sur lesquelles vous travaillez. Vous n’avez pas besoin de reconstruire votre application après avoir modifié un paramètre. Si vous générez votre application à partir de la ligne de commande ou d’un makefile, mais que vous déboguez dans l’environnement Visual Studio, vous pouvez toujours utiliser Modifier et Continuer si vous définissez l’option /ZI .

  3. Cliquez sur OK.

Appliquer explicitement des modifications de code

En C++, Modifier et Continuer peuvent appliquer des modifications de code de deux manières. Les modifications de code peuvent être appliquées implicitement, lorsque vous choisissez une commande d’exécution, ou explicitement, à l’aide de la commande Appliquer les modifications de code .

Lorsque vous appliquez explicitement des modifications de code, votre programme reste en mode arrêt : aucune exécution ne se produit.

  • Pour appliquer explicitement des modifications de code, dans le menu Débogage , choisissez Appliquer les modifications de code.

Comment arrêter les modifications de code

Pendant que Edit and Continue est en cours d’application des modifications de code, vous pouvez arrêter l’opération.

Pour arrêter l’application des modifications de code :

  • Dans le menu Débogage , choisissez Arrêter l’application des modifications de code.

    Cet élément de menu est visible uniquement lorsque les modifications de code sont appliquées.

    Si vous choisissez cette option, aucune modification du code n’est validée.

Réinitialiser le point d’exécution

Certaines modifications de code peuvent entraîner le déplacement du point d’exécution vers un nouvel emplacement lorsque "Edit and Continue" applique les modifications. La fonctionnalité place le point d’exécution aussi précisément que possible, mais les résultats peuvent ne pas être corrects dans tous les cas.

En C++, une boîte de dialogue vous informe lorsque le point d’exécution change. Vous devez vérifier que l’emplacement est correct avant de continuer le débogage. Si ce n’est pas correct, utilisez la commande Set Next Statement . Pour plus d’informations, consultez Définir l’instruction suivante à exécuter.

Utiliser du code obsolète

Dans certains cas, Modifier et Continuer ne peuvent pas appliquer immédiatement les modifications de code à l’exécutable, mais peuvent être en mesure d’appliquer les modifications de code ultérieurement si vous continuez à déboguer. Ce scénario se produit si vous modifiez une fonction qui appelle la fonction actuelle ou si vous ajoutez plus de 64 octets de nouvelles variables à une fonction sur la pile des appels.

Dans ce cas, le débogueur continue d’exécuter le code d’origine jusqu’à ce que les modifications puissent être appliquées. Le code obsolète apparaît sous la forme d’une fenêtre de fichier source temporaire dans une fenêtre source distincte, avec un titre tel que enc25.tmp. La source modifiée continue d’apparaître dans la fenêtre source d’origine. Si vous essayez de modifier le code obsolète, un message d’avertissement s’affiche.