Come ottenere uno stack di chiamate completo in Visual Studio 2005?
-
02-07-2019 - |
Domanda
Come posso ottenere uno stack di chiamate completo per un'applicazione c ++ sviluppata con Visual Studio 2005? Vorrei avere uno stack di chiamate completo che includa il codice nelle librerie di sistema.
Devo modificare alcune impostazioni in Visual Studio o devo installare software aggiuntivo?
Soluzione
-
Ottieni informazioni di debug per tutte le dipendenze del progetto. Questo è specificato in " Proprietà di configurazione - > C / C ++ - > Generale " sezione delle proprietà del progetto.
-
Nel menu, vai a " Strumenti - > Opzioni " quindi seleziona " Debug - > Simboli " ;.
-
Aggiungi una nuova posizione per i simboli (l'icona della cartella) che punta al server dei simboli gratuito di Microsoft & # 8220; symsrv symsrv.dll c: \ simboli * http://msdl.microsoft.com/downloads/symbols & # 8220;
-
Compila i " simboli cache " campo con un posto localmente in modo da non andare sempre su Internet.
Altri suggerimenti
Accetto con Clay, ma per Symbols Server dovresti ottenere l'ultimo symsrv.DLL da "Strumenti di debug per Windows", un download gratuito di Microsoft.
(Dato che hai chiesto esplicitamente cosa devi scaricare, presumo che tu non l'abbia ancora)
Oppure, facoltativamente (supponendo che Visual Studio non sia installato), prendere una copia di Strumenti di debug di Windows , installa ed esegui la tua app dal debugger (windbg.exe) o collegala a un'app già in esecuzione:
windbg [.exe] -pn program.exe
o
windbg [.exe] -p process_id
Rompi il debugger nel punto che desideri osservare per lo stack trace (Ctrl + Break). Passa al thread di interesse (molto probabilmente il thread di esecuzione principale):
~ 0s
Risolvi i simboli per i moduli di sistema (e probabilmente anche per l'app, se disponibili):
* risolvi i simboli per l'app
.sympath path_to_app_symbols
* configura dove il debugger scaricherà e memorizzerà i simboli di sistema
.symfix + path_where_system_symbols_will_be_stored
* impone al debugger di ricaricare i simboli
.reload
Emette un comando di stack di chiamate:
kb