LiveKd: un parametro segreto, ma fondamentale.

Salve a tutti.

In questo post volevo documentare un parametro di LiveKd, il tool della SysInternals, originariamente scritto da Mark Russinovich e adesso manutenuto da Ken Johnson, che serve per eseguire Live Kernel Debugging sulla macchina live o se usato su u Hyper-v Server, consente di prendere facilmente un dump delle macchine virtuali.

Proprio per quest’ultimo utilizzo, bisogna eseguire determinati passi di configurazione che adesso andrò ad illustrare.

Se eseguite LiveKD con il parametro /? questo è l’output:

livekd1

LiveKd necessita di Windbg per poter funzionare, quindi come prerequisito, bisogna scaricare i Debugging Tools per Windows, nella bitness del sistema operativo, 32 o 64 bit, e quindi copiare LiveKd nella cartella di setup di quelli.

 

Un altro requirement è impostare la variabile d’ambiente relativa ai simboli di debug: _NT_SYMBOL_PATH.

E propri relativamente ai simboli di debug, volevo documentare il parametro “/vsym” che significa Verbose Symbols.
Questo parametro al momento non è documentato, ma proprio nel caso di acquisire un dump di una macchina virtuale che sta girando in un server Hyper-v è fondamentale, in quanto per poter prendere il dump della VM, LiveKd necessita dei simboli pubblici del Kernel della macchina Host e del kernel della macchina virtuale. Usando il parametro “/vsym” risulterà immediato e facile identificare quale simboli mancano, e se la macchina non ha accesso fisico ad Internet, sarà possibile copiare il file di cui necessitano  simboli su una macchina collegata ad internet, scaricare i simboli mancanti, aggiungerli nello store locale della macchina Hyper-v e procedere con l’acquisizione del dump.

 

Procedura passo passo per l’acquisizione di un dump di una machina virtuale che gira su un server Hyper-v.

1. Scaricare e installare i Debugging Tools per Windows nella bitness del sistema operativo:

X86 > http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.404.msi
X64 > http://msdl.microsoft.com/download/symbols/debuggers/dbg_amd64_6.11.1.404.msi

2. Installare i Debugging Tools per Windows in “C:\debuggers” o nella loro cartella predefinita.

3. Scaricare LiveKd e copiarlo nella cartella di setup dei Debugging Tools per Windows.

4. Aprire un Command Prompt “As Administrator”.

5. Impostare la variabile d’ambiente relativa ai simboli di debug:

SET _NT_SYMBOL_PATH=srv*c:\Symbols*http://msdl.microsoft.com/download/symbols

Questa sintassi, scaricherà dal symbols server Microsoft i simboli richiesti da LiveKd in “C:\Symbols”. Se la cartella non esiste, verrà creata automaticamente.

6. Elencare le Virtual Machine che sono in esecuzione sul server Hyper-v:

liveKd /hvl

7. Prendere il dump usando il seguente comando:

livekd /o c:\memory.dmp /p /hv <Guid o nome VM> /vsym

Il comando qui riportato, salverà il dump memory.dmp in ‘C:\’. Se volete usare un altro percorso, assicuratevi che la cartella che userete esista prima di procedere; ‘–p’ indica che la VM verrà messa in pausa prima di procedere col dump; ‘-hv’ indica la Virtual Machine target dell’operazione attraverso il suo GUID o nome elencato dal comando precedente; e per finire, ‘/vsym’ causerà LiveKd ad emettere informazioni dettagliate circa la presenza o mancanza dei simboli necessari per terminare l’operazione.

 

livekd2

Come vedete evidenziato in giallo, vengono individuati i file dei simboli necessari, ntkrnlpa.exe per la macchina XP, e ntkrnlmp.exe per l’host Hyper-v. Se la macchina non fosse collegata ad Internet, basterebbe copiare quei file e portarli su una macchina collegata ad Internet ed eseguire Symchk dalla cartella di installazione di Windbg usando questa sintassi:

symchk "c:\temp\stage" /s "srv*c:\temp\stage\Symbols*http://msdl.microsoft.com/download/symbols"

Dove i nostri file saranno contenuti nella cartella di stage, ‘c:\temp\stage’ e i simboli verranno scaricati in ‘c:\temp\stage\symbols’.

 

Alla Prossima

Mario Raccagni
Senior Support Engineer
Microsoft Enterprise Platform Support