Lär dig hur Mark Russinovichs Windows Internals-tänk formade Sysinternals, WinDbg-arbetsflöden och praktisk observabilitet för felsökning och pålitlighet på Windows.

Om du kör Windows i produktion—på laptops, servrar, VDI eller moln-VM—så dyker Mark Russinovich arbete fortfarande upp i det dagliga driftsarbetet. Inte på grund av personlighet eller nostalgi, utan för att han hjälpte till att popularisera ett bevisförst-tankesätt för felsökning: titta på vad OS faktiskt gör, och förklara symptom med bevis.
Observabilitet betyder att du kan svara på “vad händer just nu?” med signaler systemet producerar (händelser, spår, räknare). När en tjänst blir seg eller inloggningar hänger, är observabilitet skillnaden mellan att gissa och att veta.
Felsökning är att förvandla ett vagt problem ("den frös") till en specifik mekanism ("denna tråd är blockerad av I/O", "denna process thrashar sidfilen", "en DLL-injektion förändrade beteendet").
Pålitlighet är förmågan att fortsätta fungera under belastning och att återhämta sig förutsägbart—färre incidenter, snabbare återställningar och säkrare ändringar.
De flesta “mystiska avbrott” är inte mystiska—det är Windows-beteenden du inte kartlagt ännu: handle-leak, okontrollerade barnprocesser, fastnade drivrutiner, DNS-timeouter, trasiga autostart-poster eller säkerhetsverktyg som lägger overhead. En grundläggande förståelse för Windows internals (processer, trådar, handles, tjänster, minne, I/O) hjälper dig känna igen mönster snabbt och samla rätt bevis innan problemet försvinner.
Vi fokuserar på praktiska, driftvänliga arbetsflöden som använder:
Målet är inte att göra dig till kernel-ingenjör. Det är att göra Windows-incidenter kortare, lugnare och enklare att förklara—så att åtgärder blir säkrare och upprepbara.
Windows “internals” är helt enkelt de mekanismer Windows använder för att göra verkligt arbete: schemalägga trådar, hantera minne, starta tjänster, ladda drivrutiner, hantera fil- och regist aktivitet och upprätthålla säkerhetsgränser. Det praktiska löftet är enkelt: när du förstår vad OS gör, slutar du gissa och börjar förklara.
Det spelar roll eftersom de flesta driftsymptom är indirekta. “Maskinen är långsam” kan vara CPU-konkurrens, en het tråd, en drivrutins-interrupt-storm, sidtryckning, eller ett antivirusfilter som blockerar fil-I/O. “Den hänger” kan vara en deadlock, ett fast nätverksanrop, en lagrings-timeout eller en tjänst som väntar på en beroende. Internals-kunskap förvandlar vaga klagomål till testbara hypoteser.
På en hög nivå körs de flesta appar och tjänster i user mode. När de kraschar tar de vanligtvis bara ner sig själva. Kernel mode är där Windows självt och drivrutiner körs; problem där kan frysa hela systemet, utlösa en bugcheck (blåskärm) eller tyst försämra pålitligheten.
Du behöver inte djup teori för att använda denna distinktion—bara så mycket att du väljer rätt bevis. En app som peggar CPU är ofta user mode; upprepade lagrings- eller nätverksdrivrutinsproblem pekar ofta mot kernel mode.
Russinovichs tankesätt—reflekterat i verktyg som Sysinternals och i Windows Internals—är “bevis först.” Innan du ändrar inställningar, startar om blint eller installerar om, fånga vad systemet gör: vilken process, vilken tråd, vilket handle, vilken registernyckel, vilken nätverksanslutning, vilken drivrutin, vilket event.
När du kan svara på “vad gör Windows just nu, och varför,” blir fixes mindre, säkrare och lättare att motivera—och pålitlighetsarbete slutar vara reaktivt släckande av bränder.
Sysinternals förstås bäst som en “synlighetsverktygslåda” för Windows: små, portabla verktyg som avslöjar vad systemet faktiskt gör—process för process, handle för handle, registernyckel för registernyckel. Istället för att behandla Windows som en svart låda låter Sysinternals dig observera beteendet bakom symptom som “appen är seg”, “CPU är hög” eller “servern tappar anslutningar”.
Mycket driftvärk kommer från rimligt klingande gissningar: det måste vara DNS, det är förmodligen antivirus, Windows Update har fastnat igen. Sysinternals-tankesättet är enkelt: lita på din instinkt tillräckligt för att forma en hypotes, och verifiera den sedan med bevis.
När du kan se vilken process som konsumerar CPU, vilken tråd som väntar, vilken sökväg som blir slagen på eller vilket registernyckel som ständigt skrivs om, slutar du debattera åsikter och börjar begränsa orsaker. Denna förskjutning—från berättelse till mätning—är vad som gör internals-kunskap praktisk, inte akademisk.
Dessa verktyg är byggda för “allt brinner”-ögonblicket:
Det spelar roll när du inte har råd med lång uppsättningstid, tung agentutbredning eller omstart bara för att samla bättre data.
Sysinternals är kraftfullt och kraft kräver styrning:
Använd på detta sätt blir Sysinternals en disciplinerad metod: observera det osynliga, mät sanningen och gör ändringar som är motiverade—inte hoppfulla.
Om du bara spar ett par Sysinternals-verktyg i din admin-verktygslåda, välj Process Explorer och Process Monitor. Tillsammans svarar de på de vanligaste “vad gör Windows just nu?”-frågorna utan agent, omstart eller tung konfiguration.
Process Explorer är Task Manager med röntgensyn. När en maskin är seg eller instabil hjälper det dig peka ut vilken process som är ansvarig och vad den är kopplad till.
Det är särskilt användbart för:
Den sista punkten är en pålitlighets-superkraft: “Varför kan jag inte ta bort den här filen?” blir ofta “Den här tjänsten har ett öppet handle till den.”
Process Monitor (Procmon) fångar detaljerade händelser över filsystem, register och process/tråd-aktivitet. Det är verktyget för frågor som: “Vad ändrades när appen hängde?” eller “Vad slår hårt mot disken var 10:e minut?”.
Innan du trycker Capture, formulera frågan:
Procmon kan överväldiga dig om du inte filtrerar aggressivt. Börja med:
Vanliga, praktiska utfall: identifiera en felande tjänst som upprepade gånger frågar efter en saknad registernyckel, upptäcka en skyddsskannare som rör tusentals filer, eller hitta en misslyckad DLL-laddning ("NAME NOT FOUND") som förklarar varför en app inte startar på en maskin men fungerar på en annan.
När en Windows-maskin “känns fel” behöver du ofta inte ett helt övervakningsstack för att få grepp. En liten uppsättning Sysinternals-verktyg kan snabbt besvara tre praktiska frågor: Vad startar automatiskt? Vad kommunicerar på nätet? Var tog minnet vägen?
Autoruns är snabbaste sättet att förstå allt som kan starta utan att användaren explicit kör det: tjänster, schemalagda uppgifter, shell-extensioner, drivrutiner och mer.
Varför det spelar roll för pålitlighet: startobjekt är frekventa källor till långsamma uppstarter, intermittenta hängningar och CPU-toppar som bara syns efter inlogg. En instabil uppdaterare, en legacy-drivrutin eller en trasig shell-extension kan försvaga hela systemet.
Praktisk tips: fokusera på poster som är unsigned, nyligen tillagda eller misslyckas att läsas in. Om inaktivering av en post stabiliserar maskinen har du förvandlat ett vagt symptom till en specifik komponent som kan uppdateras, tas bort eller ersättas.
TCPView ger en direkt karta över aktiva anslutningar och lyssnare, knutna till processnamn och PID. Det är idealiskt för snabba kontroll:
Även för icke-säkerhetsgranskningar kan detta avslöja okontrollerade agenter, felkonfigurerade proxys eller “retry-storms” där appen verkar seg men rotorsaken är nätverksbeteende.
RAMMap hjälper dig tolka minnespress genom att visa var RAM egentligen är allokerat.
En användbar baseline-åtskillnad:
Om användare rapporterar “lite minne” medan Task Manager ser förvirrande ut, kan RAMMap bekräfta om du har verklig process-tillväxt, tung filcache eller något som en drivrutin som tar icke-paged-minne.
Om en app blir sämre över dagar kan Handle visa ökande handle-räkningar (klassiskt leak-mönster). VMMap hjälper när minnesanvändningen är ovanlig—fragmentering, stora reserverade regioner eller allokeringar som inte syns som vanliga “private bytes”.
Windows-drift börjar ofta med det som är lättast att få tag i: Event Viewer och några skärmdumpar av Task Manager. Det är okej för smulor, men pålitligt incidenthantering behöver tre kompletterande signalkategorier: loggar (vad som hände), metrik (hur illa blev det) och spår (vad systemet gjorde ögonblick-för-ögonblick).
Windows-händelseloggar är utmärkta för identitet, tjänste-livscykel, policyändringar och appnivåfel. De är också ojämna: vissa komponenter loggar rikt, andra sparsamt, och meddelandetext kan vara vag ("The application stopped responding"). Behandla dem som tidslinjeankare, inte hela historien.
Vanliga vinster:
Prestandaräknare svarar på “är maskinen frisk?” Under en incident, börja med:
Metriker talar inte om varför en topp uppstod, men de berättar när den började och om den förbättras.
Event Tracing for Windows (ETW) är Windows inbyggda flight recorder. Istället för ad-hoc textmeddelanden emitterar ETW strukturerade händelser från kernel, drivrutiner och tjänster i hög volym—process/tråd-aktivitet, fil-I/O, registeråtkomst, TCP/IP, schemaläggning och mer. På den nivån blir många “mystiska stopp” förklarliga.
En praktisk regel:
Undvik “slå på allt för alltid.” Håll en liten alltid-på-baslinje (nyckelloggar + kärnmetrik) och använd korta, riktade ETW-fångster under incidenter.
De snabbaste diagnoserna kommer från att aligna tre klockor: användarrapporter ("10:42 frös det"), metrikinflectioner (CPU/disk-topp) och logg/ETW-händelser på samma tidsstämpel. När dina data delar en konsekvent tidsbas, slutar incidenter vara gissningar och blir berättelser du kan verifiera.
Windows standard-händelselogg är användbar, men den missar ofta “varför nu?”-detaljer operatörer behöver när något ändras oväntat. Sysmon (System Monitor) fyller det gapet genom att spela in högre-fidelitets-process- och systemaktivitet—särskilt kring uppstarter, persistens och drivrutinsbeteende.
Sysmons styrka är kontext. Istället för bara “en tjänst startade” kan du ofta se vilken process som startade den, med full kommandorad, förälderprocess, hashar, användarkonto och rena tidsstämplar för korrelation.
Det är värdefullt för pålitlighet eftersom många incidenter börjar som “små” ändringar: en ny schemalagd uppgift, en tyst uppdaterare, ett härjande skript eller en drivrutin som beter sig illa.
En “log everything” Sysmon-konfig är sällan en bra första åtgärd. Börja med en minimal, pålitlighetsfokuserad uppsättning och expandera bara när du har tydliga frågor.
Bra tidiga kandidater:
Tuna med riktade include-regler (kritiska vägar, kända servicekonton, nyckelservrar) och noggrant valda exclude-regler (brusiga uppdaterare, betrodda management-agenter) så signalen förblir läsbar.
Sysmon hjälper ofta att bekräfta eller avfärda vanliga “mystiska ändrings”-scenarier:
Testa påverkan på representativa maskiner först. Sysmon kan öka disk-I/O och event-volym, och centraliserad insamling kan bli dyr snabbt.
Behandla också fält som kommandorader, användarnamn och sökvägar som känsliga. Tillämpa åtkomstkontroller, retention och filtrering innan bred utrullning.
Sysmon är bäst som högvärdiga brödsmulor. Använd det tillsammans med ETW för djupa prestandafrågor, metrik för trenddetektion och disciplinerade incidentanteckningar så du kan koppla vad som ändrades till vad som bröts—och hur du fixade det.
När något “bara kraschar” är det mest värdefulla artefaktet ofta en dumpfil: en snapshot av minne plus tillräckligt med exekveringstillstånd för att återskapa vad processen (eller OS) gjorde vid felögonblicket. Till skillnad från loggar kräver dumps inte att du förutsäger rätt meddelande i förväg—de fångar bevisen i efterhand.
Dumps kan peka på en specifik modul, anropsväg och feltyp (access violation, heap-korrumption, deadlock, drivrutinsfel), vilket är svårt att härleda från symptom ensam.
WinDbg förvandlar en dump till en berättelse. Det viktigaste:
Ett typiskt arbetsflöde är: öppna dumpen → ladda symboler → kör automatisk analys → validera genom att granska top-stackar och involverade moduler.
“Det är fryst” är ett symptom, inte en diagnos. För hängningar, fånga en dump medan appen är otillgänglig och inspektera:
Du kan ofta självdiagnostisera tydliga fall (upprepade krascher i en modul, uppenbara deadlocks, stark korrelation till en viss DLL/drivrutin). Eskalera när dumps implicerar tredjepartsdrivrutiner/säkerhetsprogram, kernel-komponenter, eller när symboler/källåtkomst saknas—då kan en leverantör (eller Microsoft) behövas för full kedjeanalys.
Många “mystiska Windows-problem” upprepar samma mönster. Skillnaden mellan att gissa och att fixa är att förstå vad OS gör—och Internals/Sysinternals-mentaliteten hjälper dig se det.
När folk säger “appen läcker minne” menar de ofta en av två saker.
Working set är det fysiska RAM som för närvarande backar processen. Det kan gå upp och ner när Windows trimmar minne under press.
Commit är mängden virtuellt minne systemet lovat att backa med RAM eller sidfil. Om commit fortsätter att stiga har du en verklig läckrisk: till slut når du commit-gränsen och allokeringar börjar misslyckas eller hosten blir instabil.
Ett vanligt symptom: Task Manager visar “tillgängligt RAM”, men maskinen blir ändå seg—eftersom commit, inte ledigt RAM, är begränsningen.
Ett handle är en referens till ett OS-objekt (fil, registernyckel, event, section osv.). Om en tjänst läcker handles kan den fungera bra i timmar eller dagar, sedan börja misslyckas med konstiga fel (kan inte öppna filer, kan inte skapa trådar, kan inte acceptera anslutningar) när per-process handle-räkningar växer.
I Process Explorer, övervaka handle-räknetrender över tid. En stadig uppåtgående kurva är en stark ledtråd att tjänsten “glömmer” att stänga något.
Lagringsproblem visar sig inte alltid som hög genomströmning; de visar ofta som hög latens och retries. I Process Monitor, leta efter:
Observera även filter-drivrutiner (AV, backup, DLP). De kan lägga sig i fil-I/O-banan och lägga till fördröjning eller fel utan att applikationen “gör något fel”.
En ensam het process är enkel: en exekverbara förbrukar CPU.
Systemomfattande konkurrens är knepigare: CPU är hög eftersom många trådar är runnable och slåss om lås, disk eller minne. Internals-tänk får dig att fråga: “Gör CPU:n användbart arbete, eller spinner den medan den väntar på något annat?”
När timeouter inträffar, kartlägg process → anslutning med TCPView eller Process Explorer. Om fel process äger socketen har du en konkret syndabock. Om rätt process äger den, leta efter mönster: SYN-retries, långvariga inaktiva anslutningar eller en explosion av kortlivade utgående försök som tyder på DNS/firewall/proxy-problem snarare än “appen är nere”.
Pålitlighetsarbete blir enklare när varje incident följer samma väg. Målet är inte att “köra fler verktyg”—det är att fatta bättre beslut med konsekvent bevisföra.
Skriv ner vad “dåligt” ser ut i en mening: “App fryser i 30–60 sek när den sparar en stor fil” eller “CPU går till 100% var 10:e minut.” Om du kan reproducera, gör det; om inte, definiera triggern (tidsfönster, arbetsbelastning, användaråtgärd).
Innan du samlar tung data, bekräfta symptomet och omfattningen:
Här hjälper snabba kontroller (Task Manager, Process Explorer, grundläggande räknare) dig välja vad du ska fånga nästa.
Fånga bevis som om du skulle lämna det till en kollega som inte var där. En bra ärendefil brukar innehålla:
Håll fångster korta och riktade. Ett 60-sekunders spår som täcker fel-fönstret slår en 6-timmars capture ingen orkar öppna.
Översätt vad du samlat till en enkel berättelse:
Om du inte kan förklara det enkelt behöver du förmodligen en renare capture eller en smalare hypotes.
Applicera den minsta säkra åtgärden och bekräfta med samma reproduktionssteg och en “före vs efter”-capture.
För att minska MTTR, standardisera playbooks och automatisera det tråkiga:
Efter åtgärd, fråga: “Vilken signal skulle gjort detta uppenbart tidigare?” Lägg till den signalen—Sysmon-event, ETW-provider, en prestandaräknare eller en lätt hälsokontroll—så nästa incident blir kortare och lugnare.
Poängen med Windows-internalsarbete är inte att “vinna” en debug-session—det är att omvandla vad du såg till ändringar som hindrar att incidenten återkommer.
Internals-verktyg hjälper dig ofta avgränsa problemet till en liten uppsättning spakar. Håll översättningen explicit:
Skriv ner “eftersom”: “Vi ändrade X eftersom vi observerade Y i Process Monitor / ETW / dumps.” Den meningen förhindrar att kunskap försvinner i tyst samförstånd.
Gör din ändringsprocess matcha blast-radien:
Även när rotorsaken är specifik kommer hållbarhet ofta från återanvändbara mönster:
Behåll det du behöver och skydda det du inte bör samla in.
Begränsa Procmon-filter till misstänkta processer, scrubba sökvägar/användarnamn innan delning, sätt retention för ETW/Sysmon-data och undvik tunga nätverkspaket om det inte är nödvändigt.
När du har ett upprepbart arbetsflöde är nästa steg att paketera det så andra kan köra det konsekvent. Här kan en vibe-coding-plattform som Koder.ai vara användbar: du kan förvandla din incident-checklista till en liten intern webbapp (React UI, Go-backend med PostgreSQL) som guidar respondenter genom “observe → capture → explain”, lagrar tidsstämplar och artefakter, och standardiserar namngivning och ärendefilstruktur.
Eftersom Koder.ai bygger appar via chat med agent-baserad arkitektur kan team iterera snabbt—lägga till en “start ETW-session”-knapp, en Procmon-filtermall-bibliotek, snapshot/rollback av ändringar eller en exportbar runbook-generator—utan att bygga om allt i en traditionell dev-pipeline. Om du delar interna pålitlighetsrutiner stödjer Koder.ai även export av källkod och flera nivåer (gratis till enterprise), så du kan börja smått och skala governance senare.
En gång i veckan, välj ett verktyg och en 15-minutersövning: spåra en långsam appstart med Procmon, inspektera en tjänsteträd i Process Explorer, granska Sysmon-eventvolym eller ta en kraschdump och identifiera felande modul. Små repetitioner bygger den muskelminne som gör verkliga incidenter snabbare—och säkrare.
Mark Russinovich populariserade ett bevisförst-tankesätt för Windows-felsökning och levererade (och påverkade) verktyg som gör operativsystemet observerbart i praktiken.
Även om du aldrig läst Windows Internals använder du sannolikt arbetsflöden formade av Sysinternals, ETW och dumpanalys för att korta ner incidenter och göra åtgärder upprepbara.
Observabilitet är din förmåga att svara på "vad händer just nu?" utifrån systemsignaler.
På Windows betyder det ofta en kombination av:
Kunskap om internals hjälper dig göra vaga symptom till testbara hypoteser.
Till exempel blir “servern är seg” en kortare lista av mekanismer att validera: CPU-konkurrens mot sidtryckning (paging), I/O-latens eller drivrutin/filter-overhead. Det snabbar upp triage och hjälper dig samla rätt bevis innan problemet försvinner.
Använd Process Explorer när du behöver identifiera vem som är ansvarig.
Det är bäst för snabba svar som:
Använd Process Monitor när du behöver aktivitetsspåret över filsystem, register och process-/trådoperationer.
Praktiska exempel:
Filtrera hårt och fånga bara fel-fönstret.
Ett bra startflöde:
Ett litet spår du kan analysera slår en massiv inspelning ingen kan öppna.
Autoruns svarar på frågan “vad startar automatiskt?” — tjänster, schemalagda uppgifter, drivrutiner, shell-extensioner med mera.
Det är särskilt användbart för:
Fokusera först på poster som är , eller , och inaktivera en sak i taget med anteckning.
ETW (Event Tracing for Windows) är Windows inbyggda högvolyms, strukturerade “flight recorder”.
Använd ETW när loggar och metrik visar att något är fel men inte varför — till exempel fördröjningar orsakade av I/O-latens, schemaläggningsförseningar, drivrutinbeteende eller beroendetidsgränser. Håll inspelningarna korta, riktade och tidskorrelerade med det rapporterade symptomet.
Sysmon lägger till högkontext-telemetri (förälder/process, kommandorader, hashar, drivrutinladdningar) som hjälper dig svara på “vad ändrades?”
För pålitlighet är det användbart för att bekräfta:
Börja med en minimal konfiguration och fintrimma include/exclude för att kontrollera eventvolymen och kostnaden.
En dump är ofta det mest värdefulla artefaktet för krascher och hängningar eftersom den fångar exekveringstillståndet i efterhand.
WinDbg förvandlar dumps till svar, men korrekta symboler är nödvändiga för meningsfulla stackar och identifiering av moduler.