2012-10-02 11 views
10

Ho utilizzato il debug del kernel di Windows utilizzando VirtualKD, WinDBG e una singola macchina virtuale.Debug di Windows Kernel da Linux

Recentemente ho ottenuto una macchina Linux, e ora mi chiedo- Qual è il modo più semplice per eseguire il debug del kernel di Windows quando l'host non è in grado di eseguire VirtualKD/WinDBG *?

ho assumere la soluzione richiederà due macchine virtuali, ma io preferirei avere due istanze ospitato sulla mia macchina reale, piuttosto che avere un'istanza che risiede all'interno di un'altra istanza virtuale ...

Esiste un modo per fare quel lavoro?

Grazie in anticipo!

* Il vino è l'ultima risorsa per ragioni di stabilità ...

risposta

16

risolto! Fondamentalmente, ho finito per usare due (VirtualBox) VM emulare un connessione seriale (cavo null-modem) su un socket Unix domain (sull'host). Per ulteriori informazioni, leggere qui di seguito:

Hardware configurazione *:

  • debug:
    • Assicurarsi che la macchina è spenta e modificare porte seriali impostazioni.
    • Abilita Porta 1, e assegnare valori come segue: numero di porta: COM1, Port Mode: Host tubo, creare la pipe: incontrollato (client), Port/File Path: /tmp/win_link.
  • Debugger:
    • Come sopra (utilizzando lo stesso percorso), solo che questa volta Creare tubo deve essere Controllato (server).

Debugger configurazione:

  • Run WinDBG e premere Ctrl + K per richiamare Kernel Debugging.
  • in COM, immettere: Baudrate: 115200, Porta: COM1, Reset: 0 e verificare che Tubo e riconnessione sono incontrollato (importante).
  • Ti verrà presentato con il seguente risultato: Opened \\\\.\com1 Waiting to reconnect...

debug di installazione:

  • Run bootcfg/debug on/port com1/baud 115200/id 1. Per verificare, eseguire bootcfg. **
  • Riavviare.
  • Molto presto durante la fase di avvio, WinDBG sull'altra macchina dovrebbe rilevare che il debuggee è in esecuzione.

* Supponendo che VirtualBox sia utilizzato. Gli utenti VMWare/KVM saranno probabilmente in grado di ottenere gli stessi risultati seguendo passi simili. Inoltre, per maggiori informazioni, fare riferimento allo VirtualBox docs.

** Supponendo che gli ospiti siano Windows XP. Versioni successive includono bcdedit, che può essere utilizzato come descritto here.

+0

La configurazione sembra perfetto, ma indipendentemente da ciò che la configurazione che sto usando, non riesco a vedere le porte seriali su entrambi i miei VM Windows.Hai mai avuto un problema simile? –

0

Un'altra opzione al giorno d'oggi è di abilitare il debug del kernel locale. Questo viene fornito con lo limitations, tuttavia ti permetterà di accedere ai dati del kernel usando solo la una VM.

Questo approccio funziona solo su Windows 8.0 e Windows Server 2012 e versioni successive.

procedere come segue:

  1. Aprire una finestra del prompt dei comandi come amministratore.
  2. Enter bcdedit /debug on
  3. Se il computer non è già configurato come destinazione di un trasporto di debug, immettere bcdedit /dbgsettings local
  4. Riavviare il computer.

Una volta che il sistema viene riavviato, è possibile eseguire WinDBG come Administrator, premere ctrl+k o andare a File -> Attach to kernel -> Local e premere OK.

Attach to Kernel Option

A quel punto, si sarà in grado di eseguire comandi del kernel in sola e le strutture di accesso del kernel:

enter image description here

testato sotto Windows 10 e con la nuova versione WinDBG (preview) .

Riferimento: Setting Up Local Kernel Debugging of a Single Computer Manually

Problemi correlati