non CDB / WinDbg hanno un equivalente a autoexp.dat?
-
21-08-2019 - |
Domanda
Mi piacerebbe cambiare il modo in cui alcuni tipi vengono visualizzati utilizzando 'dt' o '??' in modo simile a come si può fare con autoexp.dat. C'è un modo per fare questo?
Per esempio, ho una struttura simile a questa:
struct Foo
{
union Bar
{
int a;
void *p;
} b;
};
E io ho un array di qualche centinaio di questi, ognuno dei quali so che il punto a una struttura Bar. C'è un modo per dire che CDB, in questa espressione in ogni caso, che la 'p' è un puntatore a Bar? Questo è il genere di cosa che si potrebbe fare con AutoExp. (L'esempio concreto è che ho uno stashtable che può avere le chiavi di qualsiasi tipo, ma so che le chiavi sono stringhe. L'attuazione loro come puntatori void memorizza).
Grazie in anticipo!
Soluzione
Non credo che ci sia qualcosa di semplice come autoexp.dat.
Hai un paio di opzioni possibili - è possibile scrivere un file di script semplice con i comandi di debugger per scaricare la struttura di dati nel modo desiderato e utilizzare il comando "$<filename
" (o una delle sue varianti). In combinazione con gli alias utente è possibile ottenere questo per essere piuttosto facile e naturale da usare.
La seconda opzione è un po 'più complesso, ma con esso viene molto più potere - scrivere una DLL di estensione che scarica la struttura dei dati. Per qualcosa di simile a ciò che si sta parlando questo è probabilmente eccessivo. Ma avete un potere immenso con le estensioni del debugger (in realtà, gran parte del potere che viene nel pacchetto di strumenti di debug è implementato in questo modo). L'SDK è confezionato con il debugger, quindi è facile per determinare se questo è ciò che si potrebbe aver bisogno.
Altri suggerimenti
Si può dire du
o da
di averlo dump della memoria come unicode o ascii stringhe.