DTrace Élő memóriakép

A DTrace lehetővé teszi az élő helyzetkép rögzítését a D-szkripten belülről az lkd() használatával. A memóriaképfájlok a Windows hibakeresővel végzett összetett problémák hibakeresésére szolgálnak a Windowsban. További információ: Összeomlási memóriaképfájlok elemzése a WinDbg használatával. A hibakereső letöltéséhez lásd a WinDbg Windows hibakereső letöltését és telepítését.

A DTrace élő kirakodása lehetővé teszi a kirakodás indítását a hiba előfordulásának pontos helyén. A hiba lehet például egy függvény, amely hibát ad vissza. A DTrace segítségével csatlakozhat ehhez a függvény visszatéréshez, és elindíthat egy élő állapotmentést, ha a visszatérési érték "hiba".

Megjegyzés:

A DTrace az 18980-es és a Windows Server 18975-ös build után támogatott a Windows Insider-buildjeiben.

A DTrace windowsos használatával kapcsolatos általános információkért lásd: DTrace.

DTrace élő adatmentés használata

Használat: lkd (paraméter);

Az alábbi beállítások segítségével módosíthatja, hogy milyen információkat tartalmaz az élő mini dump.

0x0 – Teljes kernelkép (alapértelmezett érték)

0x1 – Felhasználói lapok és kernellapok (csak KD csatolással működik)

0x2 – Minidump

0x4 – Hyper-V lapok és kernellapok)

0x5 – Felhasználói, kernel- és hipervizoroldalak.

Élő memória dump példakódja

#pragma D option destructive

inline uint32_t STATUS_UNSUCCESSFUL = 0xc0000001UL;

syscall:::return
{ 
	this->status = (uint32_t)arg0;

	if (this->status == STATUS_UNSUCCESSFUL)
	{ 
		printf ("Return value arg0:%x \n", this->status);
		printf ("Triggering LiveDump \n");
		lkd(0);
		exit(0);
	}
}

Mentse a fájlt a következőként: livedumpstatuscheck.d.

Nyisson meg egy parancssort rendszergazdaként, és futtassa a szkriptet a -s beállítással.

C:\Windows\System32>dtrace -s livedumpstatuscheck.d
dtrace: script 'livedumpstatuscheck.d' matched 1881 probes
dtrace: allowing destructive actions
CPU     ID                    FUNCTION:NAME
  0     93 NtAlpcSendWaitReceivePort:return Return value arg0:c0000001
Triggering LiveDump

A létrehozott memóriaképfájl általában a következő helyen található: C:\Windows\LiveKernelReports.

Ha a dump fájl helye megváltozott, az érték ebben a beállításkulcsban lesz tárolva: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports

A WinDbg használatával a fent ismertetett memóriaképfájllal dolgozhat.

Hibaelhárítás

Nyissa meg a Windows Eseménynaplót: Ugrás az Alkalmazások és szolgáltatások naplóihoz - Microsoft - Windows - Kernel - Livedump - Operational>>>>

Ha nem talált naplókat, engedélyezze az elemzési csatornát a parancssorból vagy az eseménynaplóból az alábbiak szerint.

Elemzési csatorna engedélyezése parancssorból

Ezzel a paranccsal engedélyezheti az elemzési csatornát egy rendszergazdai jogosultságú parancssorból.

wevtutil sl Microsoft-Windows-Kernel-LiveDump/Analytic /e:true

Elemzési csatorna engedélyezése az Event Viewer használatával

  1. A Windows eseménynapló indítása

  2. Kattintson a Megtekintés gombra, és jelölje be a "Elemzési és hibakeresési naplók megjelenítése" jelölőnégyzetet. Ekkor megjelenik a livedump elemzési csatornája.

  3. Kattintson a jobb gombbal, és engedélyezze a Microsoft-Windows-Kernel-LiveDump/Analytic parancsot.

Teljes élő memóriaképek engedélyezése

Az alábbi példabeállítások azt mutatják, hogy az adott időpontban a lemezen lévő teljes élő memóriaképek maximális száma 10 lehet, és a teljes memóriaképeket tárolják, nem csak egy mini memóriaképet.

reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v FullLiveReportsMax /d 10

reg add "HKLM\System\CurrentControlSet\Control\CrashControl" /f /t REG_DWORD /v AlwaysKeepMemoryDump /d 1

További információ ezekről a beállításokról: WER-beállítások.

Korlátozás letiltása

A terhelés szabályozása olyan funkció, amely megakadályozza, hogy a memóriaképfájlok és a naplózási rendszer befolyásolják a Windows normál használatát. Ez a funkció akadályozhatja a valós idejű memória-kiírások létrehozását bizonyos erőforrás-korlátozott környezetekben.

Ellenőrizze az élő memóriadump szabályozás beállításait, és ha szükséges, próbálkozzon újra a szabályozás letiltásával. Ehhez állítsa a SystemThrottleThreshold és a ComponentThrottleThreshold kulcsokat nullára a következő módon.

reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v SystemThrottleThreshold /d 0
reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v ComponentThrottleThreshold /d 0

Lemezterülettel kapcsolatos problémák (202-es eseményazonosító -Error Szöveg: Az élő memóriakép-írás késleltetett memóriakép-adat API véget ért. NT állapota: 0xC000007F.)

Ez azt jelenti, hogy a lemezterület nem elegendő. Frissítse az alább látható beállításkulcsot az élő memóriakép létrehozási elérési útjának módosításához, ebben a példában a D: meghajtóra, amely további tárterülettel rendelkezik.

reg add hklm\system\currentcontrolset\control\crashcontrol\livekernelreports /v "LiveKernelReportsPath" /t reg_sz /d "\??\d:\livedumps"

Ez a parancs az élő dump gyökérútvonalát d:\livedumps állítja be (példaként).

Ne hozza létre manuálisan a mappát, mert azt az operációs rendszer kezeli, és akkor jön létre, amikor a dumpot a megfelelő engedélyekkel elindítják.

Lásd még:

DTrace Windows rendszeren

DTrace Windows–programozás

DTrace Windows-kódminták