2010-04-16 3 views
5

Ho seguito Tess Ferrandez' blog per impostare un tema personalizzato in WinDbg.Come posso creare una finestra ".cmdtree" all'avvio in WinDbg?

ho anche cominciato a lanciare automaticamente con WinDbg -c ".cmdtree c: \ mycmdtree.txt"

Questo apre correttamente il mio file cmdtree come una finestra comandi, ma non posso farlo di attraccare correttamente. Il problema sembra essere che le finestre 'comandi' possono essere aperte solo dopo aver aperto un file DMP, ma l'apertura di un file DMP ti fa uscire dall'area di lavoro 'base', quindi eventuali modifiche al tuo spazio di lavoro non vengono salvate.

Qualche idea?

+0

In realtà hai gestito la configurazione dell'ancoraggio della finestra con la risposta fornita? Ho 2 problemi: a) attracca, ma non nella posizione che mi piace eb) biglia sempre una seconda finestra –

risposta

7

Questa semplice richiesta risulta molto complicata. Le posizioni della finestra di WinDbg vengono salvate in uno spazio di lavoro. WinDbg ha diversi spazi di lavoro predefiniti:

  • Base - questo è il lavoro che viene utilizzato prima di iniziare il debug (senza discarica a cielo aperto, senza exe aperto, non attaccarsi a nulla)
  • Per file dump - per ogni voi discarica apri, hai uno spazio di lavoro per questo file
  • Per file eseguibile - per ogni file eseguibile che apri.
  • User-mode - usato quando si è il debug in modalità utente dal vivo
  • modalità kernel - usato quando si è in modalità kernel debugging
  • Per l'architettura della macchina - 1 per x64, 1 per x86, & 1 per IA64
  • remoto - utilizzato quando si è il debug remoto

Per ogni tipo di debug (cioè in modalità utente live o analisi dei dump post mortem) di solito si finisce con una combinazione di impostazioni di base + Il tuo tipo di debug.

Se si apre un file di dump, si ottiene BASE + Per file di dump Se vivete in modalità utente di debug, si ottiene BASE + User-mode Se si vive kernel eseguire il debug di una macchina x64, si ottiene BASE + kernel- mode + x64

Tutte le modifiche apportate in una determinata modalità vengono salvate nell'area di lavoro che è stata sovrapposta per ultima. Ciò significa che se apriamo un file di dump (quindi siamo Base + Per dump), qualsiasi modifica alle impostazioni verrebbe salvata nell'area di lavoro per questo dump.

Oltre alle aree di lavoro incorporate e a tutte le loro combinazioni, sono presenti aree di lavoro denominate (clienti). Questi sarebbero quando vai su File> Salva spazio di lavoro e fornisci un nome per salvare tutte le impostazioni che potresti abilitare all'avvio di Windbg usando l'argomento della riga di comando -W.

Torna alla tua domanda. Come posso aprire il .cmdtree? Nell'area di lavoro di base non è possibile. Molte finestre sono disponibili solo quando il debugger NON è nello stato dormiente (nel suo spazio di lavoro BASE). Una volta ottenuto il debugger in uno dei suoi stati attivi, queste finestre sono disponibili.

Il problema si esegue in è che, al fine di ottenere l'installazione di tutto il modo desiderato, si deve avere il debugger in uno stato attivo (un exe aperto, una discarica a cielo aperto, il debug dal vivo) e quando si va a salvando il layout della finestra, è anche possibile salvare quale exe hai aperto, o dump o live debug che stavi facendo.

La soluzione migliore è fare semplicemente ciò che si stava già facendo, ovvero utilizzare semplicemente -c nel Registro di sistema (comando HKEY_CLASSES_ROOT \ WinDbg.DumpFile.1 \ shell \ Open \). Ciò ti consentirà di fare doppio clic su un dump e ottenere queste opzioni dalla riga di comando ogni volta che esegui l'analisi del dump. È quindi possibile creare un collegamento a windbg che incorpori anche la riga di comando, in modo che queste impostazioni vengano applicate agli altri tipi di debug eseguiti.

Qui è la mia linea di comando dal regkey sopra:

"c: \ debugger \ x64 \ windbg.exe" -z "% 1" -Q -W interno -c" .load winde.dll; .enable_unicode 1; .ignore_missing_pages 1; .logopen/t C: \ Users \ jasone \ Logs \ debug.log; aS .p .process/p/r; aS .t .thread/p/r; aS! p! processo ; aS! t! thread; aS .f .frame; aS dv dv/V/i/t; aS .f .frame "

Cosa fa?

Avvia il debugger, si collega al file di dettagli, non richiede di salvare le impostazioni dell'area di lavoro, apre il mio spazio di lavoro "Interno" (un'area di lavoro denominata creata) ed esegue questi comandi per caricare estensioni debugger, preferenze di configurazione e creare alias rendimi la vita più facile.