Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows Server 2025-től dtrace
kezdődően beépített eszközként is használható. A DTrace egy parancssori segédprogram, amely lehetővé teszi a felhasználók számára a rendszer teljesítményének valós idejű monitorozását és hibakeresését. A dtrace
felhasználók dinamikusan rendszerezhetik a kernel- és a felhasználói térkódot anélkül, hogy módosítanák a kódot.
Ez a hatékony eszköz különböző adatgyűjtési és elemzési technikákat támogat, például aggregációkat, hisztogramokat és felhasználói szintű események nyomon követését. A mintavételek olyan szkriptekben adhatók meg, amelyekben dtrace
a szkript meghatározza a figyelendő mintavételeket és a mintavételek aktiválásakor végrehajtandó műveleteket. A mintavétel egy adott pont a kódban, ahol adatok gyűjthetők ezen műveletek végrehajtásához.
Megjegyzés:
Ez a beépített port dtrace
eltér a Windowshoz készült DTrace MSI-telepítőjétől, amely a paramétereket és egyéb képességeket körülveszi. A Windows DTrace-ről további információt a Windows DTrace-ben talál.
A DTrace használatával kapcsolatos átfogó útmutatót a dinamikus nyomkövetési útmutatóban találja.
A DTrace engedélyezése
A használat előtt dtrace
engedélyezni kell. Az engedélyezéshez dtrace
nyisson meg egy rendszergazdai jogú parancssort vagy PowerShellt, és futtassa a következőt:
bcdedit /set dtrace on
A módosítás érvénybe lépéséhez újraindításra van szükség.
Szemantika
dtrace [-BCeFhlqSvVwYZ] [-b bufsz] [-c cmd] [-D name[=def]] [-I path]
[-L path] [-o output] [-p pid] [-s script] [-U name] [-x opt[=val]] [-X a|c|s|t]
[-y symbol path]
[-P provider [[ predicate ] action ]] [-m [ provider: ]
module [[ predicate ] action ]] [-f [[ provider: ] module: ]
func [[ predicate ] action ]] [-n [[[ provider: ] module: ] func: ]
name [[ predicate ] action ]] [-i probe-id [[ predicate ] action ]] [ args ... ]
Megjegyzés:
A dtrace.exe paraméterei megkülönböztetik a kis- és nagybetűket. A váratlan viselkedés elkerülése érdekében ügyeljen arra, hogy a paraméterek megadásakor a megfelelő burkolatot használja.
Paraméter | Leírás |
---|---|
-b <bufsz> |
Beállítja a nyomkövetési adatok tárolásához használt puffer méretét, ahol a bufsz a puffer kívánt mérete bájtban, kilobájtban (k), megabájtban (m) vagy gigabájtban (g). |
-c <cmd> |
Futtatja a megadott parancsot, és a művelet befejeződése után kilép, ahol a parancsmag az a parancs, amelyet a nyomkövetés indítása előtt futtatni szeretne. Ha a -c több példányát használja, a dtrace kilép, amikor az összes parancs fut, és minden gyermekfolyamat kilépési állapotát jelenti. |
-C | A nyomkövetés futtatása előtt futtatja az ucpp-előfeldolgozót szkriptfájlokon. |
-D <name> =<def> |
Szimbólumot határoz meg az előfeldolgozó meghívásakor, ahol a név a definiálni kívánt szimbólum neve, a def pedig a szimbólumhoz rendelhető opcionális érték. |
-e | A kérés összeállítása után, de a mintavételek engedélyezése előtt kilép. |
-f | Engedélyezi vagy listázza a megadott függvénynévnek megfelelő mintavételeket. |
-F | Kombinálja a nyomkövetési kimenetet függvények szerint, így könnyebben elemezhető. |
-h | Létrehoz egy fejlécfájlt statikus mintavételek definícióival. |
-én <probe-id> |
Engedélyezi vagy listázza a megadott mintavételi azonosítónak megfelelő mintavételeket, ahol a mintavétel azonosítója a nyomon követhető mintavétel azonosítója. |
-Én <path> |
Hozzáadja a megadott könyvtárat az előfeldolgozó keresési útvonalához, ahol az elérési út az a könyvtár, amelyet hozzá szeretne adni, amely tartalmazza a #include fájlokat. |
-l | A megadott feltételeknek megfelelő mintavételeket sorolja fel a -P, -m, -f, -n, -i és -s paraméterek alapján. Ha ezek a paraméterek nincsenek megadva, az összes mintavétel megjelenik a listában. |
-L <path> |
Hozzáadja a megadott könyvtárat a tár keresési útvonalához, ahol az elérési út az a könyvtárkönyvtár, amelyet általános definíciókat tartalmazó könyvtárat szeretne hozzáadni. |
-m | Engedélyezi vagy listázza a megadott modulnévnek megfelelő mintavételeket egy argumentumban a formátumszolgáltató:modul vagy modul használatával. Ha a modulnév mellett nincs megadva minősítő, a modul nevével rendelkező összes mintavétel megfelel. |
-n | Engedélyezi vagy listázza azokat a mintavételeket, amelyek megfelelnek a megadott mintavételi névnek egy argumentumban a formátumszolgáltató:modul:függvény:név, modul:függvény:név, függvény:név vagy név használatával. Ha a mintavétel neve mellett nincs megadva minősítő, a rendszer az ezzel a névvel rendelkező összes mintavételt egyezteti. |
-o <output> |
Beállítja a nyomkövetési adatok kimeneti fájlját, ahol a kimenet a nyomkövetési adatokhoz használni kívánt fájl neve. |
-p <pid> |
Megragadja a megadott folyamatazonosítót (PID), és gyorsítótárazza a szimbólumtáblákat, amelyek a program viselkedésének elemzésére használhatók. |
-P <provider> |
Engedélyezi vagy listázza a megadott szolgáltatónévnek megfelelő mintavételeket, ahol a szolgáltató a szolgáltató neve. A -P paraméter több példánya is használható egyszerre. |
-q | Csendes üzemmódot állít be, amely csak explicit módon nyomkövetési adatokat ad ki. |
-s <script> |
Engedélyezi vagy listázza a mintavételeket a megadott D-szkript szerint, ahol a szkript a futtatni kívánt szkript neve. Ha -e van megadva, a program lefordítja a programot, de nem végez adatgyűjtést. Ha -l van megadva, a program lefordítja a programot, és megjelenik az egyeztetett mintavételek listája, de nem végez adatgyűjtést. Ha - e vagy -l nincs megadva, a program lefordítja, az adatgyűjtés a megadott mintavételeknek megfelelően történik, és megkezdődik a nyomkövetés. |
-S | Kinyomtatja a D-language fordító köztes kódját a stderr hibakereséséhez. |
-U <name> |
Az előfeldolgozó meghívásakor érvénytelenné teszi a szimbólumot, ahol a név annak a szimbólumnak a neve, amelyet meg szeretne tagadni. |
-v | Részletes módot állít be, amely stabilitási attribútumokat és argumentumokat jelent. |
-V | Megjeleníti a dtrace API verzióját. |
-w | A -s, -P, -m, -f, -n vagy -i paraméterekkel megadott romboló műveleteket engedélyezi. A romboló műveletek közé tartozhatnak például a kernelváltozók módosítása, a rendszerhívások viselkedésének módosítása vagy a rendszer összeomlása. |
-x <opt> =<val> |
Engedélyezi vagy módosítja a fordító és a nyomkövetési beállításokat, ahol az opt az engedélyezni vagy módosítani kívánt beállítás neve, az érték pedig opcionális érték. |
-X <a|c|s|t> |
Azt szabályozza, hogy a lefordított C-kód milyen szigorúan felel meg az ISO C szabványnak a cpp meghívásakor. Az elérhető argumentumok a következők:
|
-y <symbol path> |
Beállítja a feloldandó dtrace-szkript szimbólumkeresési elérési útját, ahol a szimbólum elérési útja a szimbólumokat tartalmazó megosztott könyvtár vagy könyvtár elérési útja. További információ: Szimbólumútvonalak. |
-Y | A dtrace-szkript alapértelmezett szimbólumkeresési elérési útját használja. |
-Z | Engedélyezi a hibakereséshez a nulla mintavételnek megfelelő mintavételi leírásokat. |
A következő lista a többi leírást ismerteti:
Predikátum: A predikátum perjelek (
/ /
) közé tartozik, és egy D-kifejezés, amely egy logikai kifejezés, amely változókra, állandókra és függvényekre hivatkozhat. A predikátumok az események kimenetének szűréséredtrace
használhatók. Ez a kifejezés minden alkalommal kiértékelésre kerül, amikor a mintavétel kigyullad. Ha a predikátum igaz értéket ad, a program végrehajtja a társított műveletet.Művelet: A művelet kapcsos zárójelek (
{ }
) közé tartozik, és olyan D-nyelvi utasítások halmaza, amelyek akkor lesznek végrehajtva, amikor a mintavétel kigyullad, és a hozzá tartozó predikátum ( ha van ilyen) igaz értéket ad vissza. A műveletek használhatók kimeneti utasítások nyomtatására, adatok rögzítésére vagy egyéb műveletek végrehajtására, például jel küldésére vagy változó módosítására.Modul: Egy szolgáltató összetevője, amely kapcsolódó mintavételeket tartalmaz. A szkriptekben
dtrace
megadható modulok, amelyek a szkript hatókörét egy adott modulra vagy modulkészletre korlátozzák.Func: A mintavételhez társított függvénynév. A mintavétel például
syscall::NtReadFile
aread
függvényhez van társítva. A szkriptekbendtrace
megadható függvények, amelyek a szkript hatókörét egy adott függvényre vagy függvénykészletre korlátozzák.Args: A műveletkifejezésnek átadott argumentumok, amikor egy mintavétel kigyullad, és a hozzá tartozó predikátum ( ha van ilyen) igaz értéket ad vissza. Az Args használatával adatokat rögzíthet a mintavételi környezetből, például a függvényargumentumok értékeit vagy a rendszerhívás visszatérési értékeit. Az Args használatával adatokat továbbíthat a mintavételek között, vagy módosíthatja a szkript viselkedését.
Példák
Az összes rendszerhívás nyomon követéséhez nyomtassa ki a végrehajtható és a rendszerhívás nevét, futtassa a következőt:
dtrace -n 'syscall:::entry { printf("%s called syscall %s", execname, probefunc); }'
Ez a parancs a folyamat "function_name" függvényét a megadott PID-vel nyomon követve kinyomtatja a függvény nevét, az azt meghívó folyamat PID-jének nevét és a végrehajtható fájl nevét.
dtrace -n 'pid$target::function_name:entry { printf("Function %s called by process %d (%s)", probefunc, pid, execname); }' -p <PID>
További példák a használathoz dtrace
: Első lépések a DTrace - Egysoros parancsokkal.