Déboguer à l’aide du débogueur juste à temps dans Visual StudioDebug using the Just-In-Time Debugger in Visual Studio

Débogage juste-à-temps peut lancer Visual Studio automatiquement lorsqu’une application s’exécutant en dehors des erreurs de Visual Studio ou des pannes.Just-In-Time debugging can launch Visual Studio automatically when an app running outside Visual Studio errors or crashes. Avec juste-à-temps de débogage, vous pouvez tester des applications en dehors de Visual Studio et ouvrez Visual Studio pour commencer le débogage lorsqu’un problème survient.With Just-In-Time debugging, you can test apps outside of Visual Studio, and open Visual Studio to begin debugging when a problem occurs.

Fonctionne avec le débogage juste-à-temps pour les applications de bureau Windows.Just-In-Time debugging works for Windows desktop apps. Il ne fonctionne pas pour les applications Windows universelles, ou pour le code managé qui est hébergé dans une application native, par exemple les visualiseurs.It does not work for Universal Windows Apps, or for managed code that is hosted in a native application, such as Visualizers.

Tip

Si vous souhaitez simplement arrêter la boîte de dialogue d’apparaître, mais n’avez installé Visual Studio, consultez désactiver le débogueur juste à temps.If you just want to stop the Just-In-Time Debugger dialog box from appearing, but don't have Visual Studio installed, see Disable the Just-In-Time Debugger. Si vous aviez une fois Visual Studio installé, vous devrez peut-être juste-à-temps de désactiver le débogage à partir du Registre Windows.If you once had Visual Studio installed, you may need to disable Just-In-Time debugging from the Windows registry.

Activer ou désactiver le débogage dans Visual Studio juste-à-tempsEnable or disable Just-In-Time debugging in Visual Studio

Note

Pour activer ou désactiver le débogage juste-à-temps, vous devez exécuter Visual Studio en tant qu’administrateur.To enable or disable Just-In-Time debugging, you must be running Visual Studio as an administrator. Activation ou désactivation juste-à-temps débogage définit une clé de Registre et des privilèges d’administrateur peuvent être nécessaires pour modifier cette clé.Enabling or disabling Just-In-Time debugging sets a registry key, and administrator privileges may be required to change that key. Pour ouvrir Visual Studio en tant qu’administrateur, avec le bouton droit de l’application de Visual Studio et choisissez exécuter en tant qu’administrateur.To open Visual Studio as an administrator, right-click the Visual Studio app and choose Run as administrator.

Vous pouvez configurer le débogage à partir de Visual Studio juste-à-temps outils > Options (ou déboguer > Options) boîte de dialogue.You can configure Just-In-Time debugging from the Visual Studio Tools > Options (or Debug > Options) dialog box.

Pour activer ou désactiver le débogage juste-à-temps :To enable or disable Just-In-Time debugging:

  1. Sur le outils ou déboguer menu, sélectionnez Options > débogage > Juste-à-temps.On the Tools or Debug menu, select Options > Debugging > Just-In-Time.

    Activer ou désactiver le débogage JITEnable or disable JIT debugging

  2. Dans le activer JIT pour ces types de code , sélectionnez les types de code que vous souhaitez pour déboguer du débogage juste-à-temps : Managed, natif, et/ou Script.In the Enable Just-In-Time debugging for these types of code box, select the types of code you want Just-In-Time debugging to debug: Managed, Native, and/or Script.

  3. Sélectionnez OK.Select OK.

Si vous activez juste-à-temps débogueur, mais il ne s’ouvre pas lorsqu’une application se bloque ou d’erreurs, consultez juste à temps de résoudre les problèmes de débogage.If you enable the Just-In-Time debugger, but it doesn't open when an app crashes or errors, see Troubleshoot Just-In-Time debugging.

Désactiver le débogage à partir du Registre Windows juste-à-tempsDisable Just-In-Time debugging from the Windows registry

Le débogage juste-à-temps peut toujours être activé même si Visual Studio n'est plus installé sur votre ordinateur.Just-In-Time debugging may still be enabled even if Visual Studio is no longer installed on your computer. Si Visual Studio n’est plus installé, vous pouvez désactiver le débogage en modifiant le Registre Windows juste-à-temps.If Visual Studio is no longer installed, you can disable Just-In-Time debugging by editing the Windows registry.

Pour désactiver le débogage juste-à-temps en modifiant le registre :To disable Just-In-Time debugging by editing the registry:

  1. À partir de la Windows Démarrer menu, exécutez le Éditeur du Registre (regedit.exe).From the Windows Start menu, run the Registry Editor (regedit.exe).

  2. Dans le Éditeur du Registre fenêtre, recherchez et supprimez les entrées de Registre suivantes :In the Registry Editor window, locate and delete the following registry entries:

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebuggerHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\DebuggerHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

    Clé de Registre JITJIT registry key

  3. Si votre ordinateur exécute un système d’exploitation de 64 bits, également supprimer les entrées de Registre suivantes :If your computer is running a 64-bit operating system, also delete the following registry entries:

    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebuggerHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger

    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\DebuggerHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

    Évitez de supprimer ou modifier d’autres clés de Registre.Make sure not to delete or change any other registry keys.

  4. Fermer le Éditeur du Registre fenêtre.Close the Registry Editor window.

Activer juste-à-temps de débogage d’un formulaire WindowsEnable Just-In-Time debugging of a Windows Form

Par défaut, les applications Windows Form ont un gestionnaire d’exceptions de niveau supérieur qui permet à l’application continue de s’exécuter s’il peut être récupéré.By default, Windows Form apps have a top-level exception handler that lets the app keep running if it can recover. Si une application Windows Forms lève une exception non gérée, elle affiche la boîte de dialogue suivante :If a Windows Forms app throws an unhandled exception, it shows the following dialog:

Exception non gérée Windows FormWindows Form unhandled exception

Pour activer le débogage au lieu de la gestion des erreurs Windows Form standard juste-à-temps, ajoutez ces paramètres :To enable Just-In-Time debugging instead of standard Windows Form error handling, add these settings:

  • Dans le system.windows.forms section de la machine.config ou <nom de l’application >. exe.config de fichiers, définissez le jitDebugging valeur true:In the system.windows.forms section of the machine.config or <app name>.exe.config file, set the jitDebugging value to true:

    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    
  • Dans une application C++ Windows Form, définissez également DebuggableAttribute à true dans un .config fichier ou dans votre code.In a C++ Windows Form application, also set DebuggableAttribute to true in a .config file or in your code. Si vous effectuez la compilation avec /Zi et sans /Og, le compilateur définit cet attribut pour vous.If you compile with /Zi and without /Og, the compiler sets this attribute for you. Si vous souhaitez déboguer une version Release non optimisée, toutefois, vous devez définir DebuggableAttribute en ajoutant la ligne suivante de votre application AssemblyInfo.cpp fichier :If you want to debug a non-optimized release build, however, you must set DebuggableAttribute by adding the following line in your app's AssemblyInfo.cpp file:

    [assembly:System::Diagnostics::DebuggableAttribute(true, true)];
    

    Pour plus d'informations, consultez DebuggableAttribute.For more information, see DebuggableAttribute.

Utiliser juste-à-temps de débogageUse Just-In-Time debugging

Cet exemple vous guide tout au long de débogage lorsqu’une application lève une erreur juste-à-temps.This example walks you through Just-In-Time debugging when an app throws an error.

  • Vous devez disposer de Visual Studio est installé pour suivre ces étapes.You must have Visual Studio installed to follow these steps. Si vous n’avez pas Visual Studio, vous pouvez télécharger la version gratuite Visual Studio Community Edition.If you don't have Visual Studio, you can download the free Visual Studio Community Edition.

  • Bien sûr juste-à-temps de rendre le débogage est activé dans outils > Options > débogage > Juste-à-temps.Make sure Just-In-Time debugging is enabled in Tools > Options > Debugging > Just-In-Time.

Pour cet exemple, vous allez effectuer un C# application console dans Visual Studio lève une NullReferenceException.For this example, you'll make a C# console app in Visual Studio that throws a NullReferenceException.

  1. Dans Visual Studio, créez un C# application console (fichier > New > projet > Visual C# > Application console) nommé ThrowsNullException.In Visual Studio, create a C# console app (File > New > Project > Visual C# > Console Application) named ThrowsNullException. Pour plus d’informations sur la création de projets dans Visual Studio, consultez procédure pas à pas : Créer une application simple.For more information about creating projects in Visual Studio, see Walkthrough: Create a simple application.

  2. Lorsque le projet s’ouvre dans Visual Studio, ouvrez le Program.cs fichier.When the project opens in Visual Studio, open the Program.cs file. Remplacez la méthode Main() par le code suivant, qui imprime une ligne dans la console et puis lève une exception NullReferenceException :Replace the Main() method with the following code, which prints a line to the console and then throws a NullReferenceException:

    static void Main(string[] args)
    {
        Console.WriteLine("we will now throw a NullReferenceException");
        throw new NullReferenceException("this is the exception thrown by the console app");
    }
    
  3. Pour générer la solution, choisissez le déboguer (valeur par défaut) ou version configuration, puis sélectionnez Build > régénérer la Solution .To build the solution, choose either the Debug (default) or Release configuration, and then select Build > Rebuild Solution.

    Note

    • Choisissez déboguer configuration pour l’expérience de débogage complète.Choose Debug configuration for the full debugging experience.
    • Si vous sélectionnez version configuration, vous devez désactiver l’option uniquement mon Code pour cette procédure fonctionne.If you select Release configuration, you must turn off Just My Code for this procedure to work. Sous outils > Options > débogage, désélectionnez activer uniquement mon Code.Under Tools > Options > Debugging, deselect Enable Just My Code.

    Pour plus d’informations sur les configurations de build, consultez Présentation des configurations de build.For more information about build configurations, see Understanding build configurations.

  4. Ouvrez l’application intégrée ThrowsNullException.exe dans votre C# dossier du projet (...\ThrowsNullException\ThrowsNullException\bin\Debug ou ...\ThrowsNullException\ ThrowsNullException\bin\Release).Open the built app ThrowsNullException.exe in your C# project folder (...\ThrowsNullException\ThrowsNullException\bin\Debug or ...\ThrowsNullException\ThrowsNullException\bin\Release).

    Vous devez voir la fenêtre de commande suivante :You should see the following command window:

    ThrowsNullExceptionConsoleThrowsNullExceptionConsole

  5. Le choisir le débogueur juste à temps boîte de dialogue s’ouvre.The Choose Just-In-Time Debugger dialog opens.

    JustInTimeDialogJustInTimeDialog

    Sous débogueurs disponibles, sélectionnez nouvelle instance de <votre préféré version/édition de Visual Studio >, si ce n’est déjà fait.Under Available Debuggers, select New instance of <your preferred Visual Studio version/edition>, if not already selected.

  6. Sélectionnez OK.Select OK.

    Le projet ThrowsNullException s’ouvre dans une nouvelle instance de Visual Studio, avec l’exécution s’est arrêtée à la ligne qui a levé l’exception :The ThrowsNullException project opens in a new instance of Visual Studio, with execution stopped at the line that threw the exception:

    NullReferenceSecondInstanceNullReferenceSecondInstance

Vous pouvez démarrer le débogage à ce stade.You can start debugging at this point. Si vous déboguez une application réelle, vous devez savoir pourquoi le code lève l’exception.If you were debugging a real app, you would need to find out why the code is throwing the exception.

Caution

Si votre application contient du code non fiable, une boîte de dialogue sécurité s’affiche, ce qui vous permet de décider s’il faut continuer le débogage.If your app contains untrusted code, a security warning dialog box appears, enabling you to decide whether to proceed with debugging. Avant de continuer le débogage, décidez si vous faites confiance au code.Before you continue debugging, decide whether you trust the code. Avez-vous écrit le code vous-même ?Did you write the code yourself? Si l'application s'exécute sur un ordinateur distant, reconnaissez-vous le nom du processus ?If the application is running on a remote machine, do you recognize the name of the process? Si l’application s’exécute localement, envisagez la possibilité de code malveillant s’exécute sur votre ordinateur.If the app is running locally, consider the possibility of malicious code running on your computer. Si vous décidez que le code est digne de confiance, sélectionnez OK.If you decide the code is trustworthy, select OK. Sinon, sélectionnez Annuler.Otherwise, select Cancel.

Juste-à-temps de résoudre les problèmes de débogageTroubleshoot Just-In-Time debugging

Si juste-à-temps de débogage ne démarre pas lorsqu’une application tombe en panne, même si elle est activée dans Visual Studio :If Just-In-Time debugging doesn't start when an app crashes, even though it is enabled in Visual Studio:

  • Peut prendre le rapport d’erreurs Windows sur la gestion des erreurs sur votre ordinateur.Windows Error Reporting could be taking over the error handling on your computer.

    Pour résoudre ce problème, utilisez l’Éditeur du Registre pour ajouter un valeur DWORD de désactivé, avec données de la valeur de 1, aux clés de Registre suivantes :To fix this issue, use Registry Editor to add a DWORD Value of Disabled, with Value data of 1, to the following registry keys:

    • Rapport d’erreurs HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\WindowsHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting

    • (Pour les ordinateurs 64 bits) : Rapport d’erreurs HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\Windows(For 64-bit machines): HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\Windows Error Reporting

    Pour plus d’informations, consultez . Paramètres de rapport d’erreurs Windows.For more information, see .WER settings.

  • Un problème connu de Windows peut être à l’origine juste-à-temps débogueur échec.A known Windows issue may be causing the Just-In-Time debugger to fail.

    La solution consiste à ajouter un valeur DWORD de automatique, avec données de la valeur de 1, aux clés de Registre suivantes :The fix is to add a DWORD Value of Auto, with Value data of 1, to the following registry keys:

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebugHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

    • (Pour les ordinateurs 64 bits) : HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug(For 64-bit machines): HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug

Vous pouvez voir les messages d’erreur suivant juste-à-temps au cours de débogage :You might see the following error messages during Just-In-Time debugging:

  • Impossible de s'attacher au processus bloqué. Le programme spécifié n'est pas un programme Windows ou MS-DOS.Unable to attach to the crashing process. The specified program is not a Windows or MS-DOS program.

    Le débogueur a essayé de s’attacher à un processus en cours d’exécution sous un autre utilisateur.The debugger tried to attach to a process running under another user.

    Pour contourner ce problème, dans Visual Studio, ouvrez déboguer > attacher au processus, recherchez le processus à déboguer dans le processus disponibles liste.To work around this problem, in Visual Studio, open Debug > Attach to Process, and find the process you want to debug in the Available Processes list. Si vous ne connaissez pas le nom du processus, recherchez l’ID de processus dans le débogueur de Visual Studio juste à temps boîte de dialogue.If you do not know the name of the process, find the Process ID in the Visual Studio Just-In-Time Debugger dialog. Sélectionnez le processus dans le processus disponibles liste, puis sélectionnez attacher.Select the process in the Available Processes list, and select Attach. Sélectionnez non pour faire disparaître juste-à-temps boîte de dialogue de débogueur.Select No to dismiss the Just-In-Time debugger dialog.

  • Impossible de démarrer le débogueur, car aucun utilisateur n'est connecté.Debugger could not be started because no user is logged on.

    Il n’existe aucun utilisateur connecté à la console, il n’existe aucune session utilisateur pour afficher juste-à-temps boîte de dialogue de débogage.There is no user logged onto the console, so there is no user session to display the Just-In-Time debugging dialog.

    Pour résoudre ce problème, ouvrez une session sur l'ordinateur.To fix this problem, log onto the machine.

  • Classe non inscrite.Class not registered.

    Le débogueur a essayé de créer une classe COM qui n’est pas inscrit, probablement en raison d’un problème d’installation.The debugger tried to create a COM class that is not registered, probably due to an installation problem.

    Pour résoudre ce problème, utilisez Visual Studio Installer pour réinstaller ou réparer votre installation de Visual Studio.To fix this problem, use the Visual Studio Installer to reinstall or repair your Visual Studio installation.

Voir aussiSee also