Felsöka med hjälp av felsökningsprogrammet Just-In-Time i Visual Studio
Just -In-Time felsökning kan automatiskt starta Visual Studio när en app som körs utanför Visual Studio får ett felmeddelande eller kraschar. Med Just-In-Time felsökning kan du testa appar utanför Visual Studio och öppna Visual Studio för att börja felsöka när ett problem uppstår.
Just-In-Time felsökning fungerar för Windows-skrivbordsappar. Det fungerar inte för Universella Windows-appar eller för hanterad kod som finns i ett inbyggt program, till exempel Visualiserare.
Tips
Om du bara vill förhindra att dialogrutan Just-In-Time Felsökning visas, men inte har Visual Studio installerat, kan du läsa Inaktivera felsökningsprogrammet Just-In-Time. Om du en gång hade Visual Studio installerat kan du behöva inaktivera Just-In-Time felsökning från Windows-registret.
Aktivera eller inaktivera Just-In-Time felsökning i Visual Studio
Du kan konfigurera just-In-Time felsökning från dialogrutan Alternativi Visual Studio Tools> (eller Felsökning>Alternativ).
Anteckning
Om du vill aktivera eller inaktivera Just-In-Time felsökning måste du köra Visual Studio som administratör. Aktivering eller inaktivering av Just-In-Time felsökning anger en registernyckel, och administratörsbehörigheter kan krävas för att ändra den nyckeln. Om du vill öppna Visual Studio som administratör högerklickar du på Visual Studio-appen och väljer Kör som administratör.
Så här aktiverar eller inaktiverar du felsökning av justIn-Time:
På menyn Verktyg eller Felsökning väljer du Alternativ>Felsökning>Just-In-Time.
Anteckning
Om menyalternativet Just-In-Time inte visas kontrollerar du att felsökningsprogrammet Just-In-Time är installerat med Visual Studio Installer.
I rutan Aktivera just-in-time-In-Time felsökning för dessa typer av kod väljer du vilka typer av kod du vill att just-in-time-In-Time-felsökning ska felsöka: Managed, Nativeoch/eller Script.
Välj OK.
Om du aktiverar felsökningsprogrammet Just-In-Time, men det inte öppnas när en app kraschar eller fel uppstår, kan du läsa Felsöka Just-In-Time felsökning.
Inaktivera just-In-Time felsökning från Windows-registret
Just-In-Time felsökning kan fortfarande vara aktiverad även om Visual Studio inte längre är installerat på datorn. Om Visual Studio inte längre är installerat kan du inaktivera Just-In-Time felsökning genom att redigera Windows-registret.
Så här inaktiverar du felsökning av justIn-Time genom att redigera registret:
Kör Registry Editor (regedit.exe) från menyn Start i Windows ).
I fönstret Registereditorn letar du upp och tar bort följande registerposter om de finns:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
Ta också bort följande registerposter om de finns:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
Se till att inte ta bort eller ändra andra registernycklar.
Stäng Registereditorns fönster.
Aktivera just-In-Time felsökning av ett Windows-formulär
Som standard har Windows Form-appar en undantagshanterare på toppnivå som gör att appen kan fortsätta köras om den kan återställas. Om en Windows Forms-app utlöser ett ohanterat undantag visas följande dialogruta:
Om du vill aktivera Just-In-Time felsökning i stället för standardhantering av Windows-formulärfel lägger du till följande inställningar:
I avsnittet
system.windows.forms
i filen machine.config eller <appnamn>.exe.config anger du värdetjitDebugging
tilltrue
:<configuration> <system.windows.forms jitDebugging="true" /> </configuration>
I ett C++ Windows-formulärprogram anger du även
DebuggableAttribute
tilltrue
i en .config fil eller i koden. Om du kompilerar med /Zi och utan /Oganger kompilatorn det här attributet åt dig. Om du vill felsöka en icke-optimerad versionsversion måste du dock angeDebuggableAttribute
genom att lägga till följande rad i appens AssemblyInfo.cpp-fil:[assembly:System::Diagnostics::DebuggableAttribute(true, true)];
Mer information finns i DebuggableAttribute.
Använd just-In-Time felsökning
Det här exemplet vägleder dig genom Just-In-Time felsökning när en app genererar ett fel.
Du måste ha Visual Studio installerat för att kunna följa dessa steg. Om du inte har Visual Studio kan du ladda ned den kostnadsfria Visual Studio Community Edition.
Kontrollera att Just-In-Time felsökning är aktiverat i Verktyg>Alternativ>Felsökning>Just-In-Time.
I det här exemplet skapar du en C#-konsolapp i Visual Studio som genererar en NullReferenceException-.
Skapa en C#-konsolapp i Visual Studio (File>New>Project>Visual C#>Console Application) med namnet ThrowsNullException. Mer information om hur du skapar projekt i Visual Studio finns i Genomgång: Skapa ett enkelt program.
När projektet öppnas i Visual Studio öppnar du filen Program.cs. Ersätt metoden Main() med följande kod, som skriver ut en rad till konsolen och sedan genererar en 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"); }
Om du vill skapa lösningen väljer du antingen konfigurationen Debug (standard) eller Version och väljer sedan Build>Rebuild Solution.
Anteckning
- Välj Felsökning konfiguration för en fullständig felsökningsupplevelse.
- Om du väljer Version konfiguration måste du inaktivera Just My Code- för att den här proceduren ska fungera. Under Verktyg>Alternativ>Felsökningavmarkerar du Aktivera bara min kod.
Mer information om byggkonfigurationer finns i Understanding build configurations.
Öppna den skapade appen ThrowsNullException.exe i C#-projektmappen (...\ThrowsNullException\ThrowsNullException\bin\Debug eller ...\ThrowsNullException\ThrowsNullException\bin\Release).
Du bör se följande kommandofönster:
Dialogrutan Välj bara-In-Time Debugger öppnas.
Under Tillgängliga felsökningsprogramväljer du Ny instans av <önskad Visual Studio-version/utgåva>, om den inte redan har valts.
Välj OK.
Projektet ThrowsNullException öppnas i en ny instans av Visual Studio, med körningen avbruten vid raden som utlöste undantaget.
Du kan börja felsöka nu. Om du felsöker en riktig app måste du ta reda på varför koden utlöser undantaget.
Försiktighet
Om din app innehåller kod som inte är betrodd visas en dialogruta för säkerhetsvarning så att du kan bestämma om du vill fortsätta med felsökningen. Innan du fortsätter felsökningen bestämmer du om du litar på koden. Skrev du koden själv? Känner du igen namnet på processen om programmet körs på en fjärrdator? Om appen körs lokalt bör du överväga möjligheten att skadlig kod körs på datorn. Om du bestämmer dig för att koden är tillförlitlig väljer du OK. Annars väljer du Avbryt.
Felsöka just-In-Time-debuggning
Om Just-In-Time felsökning inte startar när en app kraschar, även om den är aktiverad i Visual Studio:
Ett känt Windows-problem kan orsaka att felsökaren Just-In-Time misslyckas.
Korrigeringen är att lägga till ett DWORD-värde av Automed värdedata1till följande registernycklar:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
(För 32-bitarsappar på 64-bitarsdatorer) HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
Windows Felrapportering kan ta över felhanteringen på datorn.
Åtgärda problemet genom att använda Registereditorn för att lägga till ett DWORD-värde av Inaktiverad, med värdedata av 1, till följande registernycklar:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting
(För 32-bitarsappar på 64-bitarsdatorer) HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\Windows Error Reporting
Mer information finns i . WER-inställningar.
Du kan se följande felmeddelanden under just-In-Time felsökning:
Det går inte att ansluta till kraschprocessen. Det angivna programmet är inte ett Windows- eller MS-DOS-program.
Felsökningsprogrammet försökte ansluta till en process som körs under en annan användare.
I Visual Studio kan du lösa det här problemet genom att öppna Debug>Attach to Process (eller trycka på Ctrl + Alt + P) och hitta den process som du vill felsöka i listan tillgängliga processer. Om du inte känner till namnet på processen hittar du process-ID:t i dialogrutan Visual Studio Just-In-Time Felsökningsprogram. Välj processen i listan tillgängliga processer och välj Bifoga. Välj Nej för att stänga Just-In-Time felsökningsprogrammets dialogruta.
Det gick inte att starta felsökningsprogrammet eftersom ingen användare är inloggad.
Ingen användare har loggat in på konsolen, så det finns ingen användarsession för att visa dialogrutan Just-In-Time felsökning.
Du kan åtgärda problemet genom att logga in på datorn.
klass inte registrerad.
Felsökningsprogrammet försökte skapa en COM-klass som inte är registrerad, förmodligen på grund av ett installationsproblem.
Åtgärda problemet genom att använda Installationsprogrammet för Visual Studio för att installera om eller reparera Visual Studio-installationen.
Relaterat innehåll
- Felsökningssäkerhet
- Första titten på felsökningsprogrammet
- Alternativ, Felsökning, Just- dialogrutanIn-Time
- Säkerhetsvarning: Det kan vara farligt att ansluta till en process som ägs av en ej betrodd användare. Om följande information ser misstänkt ut eller om du är osäker ska du inte koppla till den här processen