Dela via


Dumpfiler i användarläge

I den här artikeln får du en översikt över dumpfiler i användarläge och hur du använder dem för att lösa buggar och krascher.

Information om hur du analyserar en dumpfil finns i Analysera en dumpfil i användarläge.

Typer av dumpfiler i användarläge

Det finns flera typer av kraschdumpfiler i användarläge. De olika typerna av dumpfiler är indelade i två kategorier:

Du kan få en stor mängd information genom att analysera en dumpfil. Ingen dumpfil kan dock ge den mängd information du får från felsökning av kraschen med hjälp av ett felsökningsprogram.

Fullständiga dumpar i användarläge

En fullständig användarlägesdump är den grundläggande dumpfilen i användarläge. En fullständig dumpfil i användarläge innehåller:

  • Hela minnesutrymmet i en process.
  • Den körbara avbildningen av programmet.
  • Handtagstabellen.
  • Annan information som hjälper felsökaren att rekonstruera det minne som användes när dumpen inträffade.

Du kan krympa en fullständig dumpfil i användarläge till en minidump. Om du vill krympa en fullständig dumpfil i användarläge läser du först in dumpfilen i felsökningsprogrammet. Använd sedan kommandot .dump (Create Dump File) för att spara en ny dumpfil i minidump-format.

Trots deras namn innehåller den största minidumparfilen mer information än den fullständiga dumpfilen i användarläge. Kommandona .dump /mf och .dump /ma skapar till exempel större och mer kompletta filer än .dump /f kommandot.

I användarläge .dump /mär [MiniOptions] ofta det bästa valet. De dumpfiler som du skapar med hjälp av den här växeln kan variera i storlek från mycket små till mycket stora. Genom att ange rätt MiniOptions-växel kan du styra exakt vilken information som ingår.

Minidumps

Storleken och innehållet i en minidumpfil varierar beroende på vilket program som dumpas, vilket program som utför dumpningen och vilka alternativ som valts. Ibland är en minidump-fil måttligt stor och innehåller hela minnet och handletabellen. Andra gånger är minidump-filen mycket mindre. En minidump-fil kan till exempel bara innehålla information om en enda tråd, eller så kanske den bara innehåller information om moduler som refereras till i stacken.

Termen minidump är missvisande eftersom de största minidump-filerna innehåller mer information än en fullständig dumpfil i användarläge. Till exempel, .dump /mf eller .dump /ma skapar en större och mer fullständig fil än .dump /f. Därför rekommenderar vi att du använder .dump /m[MiniOptions] i stället för .dump /f att skapa alla dumpfiler i användarläge.

När du skapar en minidump-fil med hjälp av felsökningsprogrammet kan du välja vilken information som ska inkluderas. Kommandot .dump /m innehåller grundläggande information om de inlästa modulerna som utgör målprocessen, trådinformation och stackinformation. Du kan ändra det grundläggande kommandot med någon av följande växelalternativ:

.dump alternativ Effekt på dumpfil
/ma Skapar en minidump med alla valfria tillägg. Alternativet /ma motsvarar /mfFhut. Den lägger till fullständiga minnesdata, handledata, information om oladdade moduler, grundläggande minnesinformation och trådtidsinformation till minidumpen.
/mf Lägger till fullständiga minnesdata i minidumpen. Alla tillgängliga allokerade sidor som ägs av målapplikationen ingår.
/mF Lägger till all grundläggande minnesinformation till minidumpen. Den här omkopplaren lägger till en stream till minidumpen som innehåller all basminnesinformation, inte bara information om giltigt minne. Felsökningsprogrammet använder informationen för att rekonstruera den fullständiga virtuella minneslayouten för processen när minidumpen debuggas.
/mh Lägger till data om handtag som är kopplade till målprogrammet i minnesdumpen.
/mu Lägger till oladdad modulinformation i minnesdumpen. Det här alternativet är endast tillgängligt i Windows Server 2003 och senare versioner av Windows.
/mt Lägger till mer trådinformation i minidumpen. Trådinformationen innehåller trådtider som du kan visa med hjälp av .ttime (Visa trådtider) när du felsöker minidämparen.
/mi Lägger till sekundärminne i minidumpen. Sekundärt minne är allt minne som refereras av en pekare på stacken eller lagringsplatsen, plus en liten region som omger den här adressen.
/mp Lägger till processmiljöblock och trådmiljöblockdata till minidumpen. Den här informationen kan vara användbar om du behöver åtkomst till Windows-systeminformation om programmets processer och trådar.
/mw Lägger till alla allokerade privata sidor med läs- och skrivbehörighet i minidumpen.
/md Lägger till alla läs-/skrivdatasegment inom den körbara avbildningen till minidumpen.
/mc Lägger till kodavsnitt i bilder.
/mr Tar bort från minidupliceringsdelarna i stacken och lagrar minne som inte används för att återskapa stackspårningen. Lokala variabler och andra datatypsvärden tas också bort. Det här alternativet gör inte miniduplicering mindre (de oanvända minnesavsnitten nollställs), men det är användbart om du vill skydda sekretessen för andra program.
/mR Tar bort de fullständiga modulsökvägarna från minidumpen. Endast modulnamn ingår. Det här alternativet är användbart om du vill skydda sekretessen för användarens katalogstruktur.

Du kan kombinera dessa växelalternativ. Använd till exempel kommandot .dump /mfiu för att skapa en måttligt stor minidump som innehåller borttaget och sekundärt minne. Använd kommandot .dump /mrR för att skapa en minidump som tar bort en del av användarens information. Fullständig syntaxinformation finns i .dump (Create Dump File).

Verktyg som ska användas för att skapa en dumpfil

Du kan använda flera olika verktyg för att skapa en dumpfil i användarläge:

ProcDump

ProcDump är ett kommandoradsverktyg som du kan använda för att övervaka ett program för CPU-toppar och generera kraschdumpar under en topp. En administratör eller utvecklare kan använda kraschdumpfiler för att fastställa orsaken till ökningen. ProcDump innehåller även övervakning för låsta fönster (med samma definition av en fönsterlåsning som Windows och Aktivitetshanteraren använder) och ohanterade undantag. Du kan använda ProcDump för att generera dumpar baserat på värdena för systemprestandaräknare. ProcDump kan också fungera som ett allmänt processdumpverktyg som du kan bädda in i andra skript.

Information om hur du skapar en dumpfil i användarläge med hjälp av verktyget Sysinternals ProcDump finns i ProcDump.

WinDbg och CDB

Console Debugger (CDB) och Windows Debugger (WinDbg) är felsökningsverktyg som ingår i Windows Software Development Kit och Windows Driver Kit. Information om installationsalternativen finns i Ladda ned och installera WinDbg Windows-felsökningsprogrammet.

Du kan använda CDB eller WinDbg för att skapa dumpfiler i användarläge på flera olika sätt:

  • Skapa en dumpfil automatiskt.
  • Skapa dumpfiler när du felsöker.
  • Krymp en befintlig dumpfil.

Mer information om verktygen finns i Komma igång med Windows-felsökning och Felsökning med hjälp av CDB.

Skapa en dumpfil automatiskt

När ett programfel inträffar kan Windows svara på något av flera sätt, beroende på felsökningsinställningarna för postmortem. Om de här inställningarna instruerar ett felsökningsverktyg att skapa en dumpfil skapas en minnesdumpfil i användarläge. För mer information, se Aktivera post-mortem debugging.

Skapa dumpfiler när du felsöker

När CDB eller WinDbg felsöker ett program i användarläge kan du också använda kommandot .dump (Skapa dumpfil) för att skapa en dumpfil.

Det här kommandot gör inte att målprogrammet avslutas. Genom att välja specifika kommandoalternativ kan du skapa en minidump-fil som innehåller exakt den mängd information du vill ha.

Krympa en befintlig dumpfil

Du kan använda CDB eller WinDbg för att krympa en dumpfil. Om du vill krympa en dumpfil börjar du felsöka en befintlig dumpfil. .dump Använd sedan kommandot för att skapa en dumpfil med en mindre storlek.

Felsökning av tidsresor

Ett annat alternativ för att felsöka program i användarläge är TTD (Time Travel Debugging). TTD är ett verktyg som du kan använda för att registrera processen medan den körs. Du kan spela upp inspelningen av felsökningssessionen igen för att hitta felet. Du kan enkelt gå till olika delar av inspelningen för att förstå de villkor som ledde fram till felet och hur du åtgärdar problemet.

TTD har betydande fördelar jämfört med kraschdumpfiler, som ofta saknar den kodkörning som ledde till felet. Möjligheten att gå bakåt i kodkörningen kan vara användbar för att bestämma orsaken till problemet.

Mer information finns i översikten över felsökning av tidsresor.

Se även