Qual è l'uso dei file .map Il linker VC++ produce quando viene utilizzato il parametro/MAP o l'impostazione del progetto "Genera file mappa"? Quando ho bisogno di loro e come posso trarne beneficio?Qual è l'uso dei file .map prodotti dal linker?
risposta
Un bell'articolo su come utilizzare i file di mappe per trovare arresti anomali.
http://www.codeproject.com/KB/debug/mapfile.aspx
fare tutto questo manualmente è molto interessante.
Non sono a conoscenza di alcun strumento in grado di leggere il file di mappe e di aiutare a trovare la posizione di arresto anomalo. Se qualcuno lo sa, per favore aggiornaci.
Ne hai bisogno raramente, ma possono essere utili nel debug di alcuni problemi perché forniscono informazioni sulla posizione di funzioni e dati.
Ad esempio:
- informazioni dettagliate su tutti i segmenti (codice, dati e altre).
- numeri di riga link per codificare
È possibile utilizzare i file di mappatura per strumenti di debug.
Vuoi dire come aprire lo smontaggio del processo e controllare gli indirizzi grezzi? – sharptooth
Questa è una possibilità. Come ho detto, hai bisogno di loro raramente, ma se ne hai bisogno, sei contento che siano disponibili. –
Per i sistemi incorporati, i file di mappe sono molto più utili. (Anche se non useresti Visual C++ per questo;)
Cose come sapere quanto sei vicino a esaurire il programma/la memoria di dati e in quale posizione risiede una particolare variabile, sono importanti.
C'è qualcosa sulla piattaforma UNIX simile ai file di elenco? Se sì, come posso generarlo? – Shree
nessuna idea. controlla la documentazione del compilatore. –
WinDBG utilizza i file .map e .pdb per facilitare il debug degli arresti anomali durante l'analisi dei dump di arresto anomalo di .hdmp e .mdmp.
Fondamentalmente mappano gli indirizzi di memoria a funzioni e variabili all'interno di .exe (o .dll). Molto utile in generale.
MODIFICA: il modo più utile per eseguire il debug "dopo il fatto" si blocca utilizzando WinDbg per me (piattaforma Windows). Aprilo e apri il crash dump. Quindi imposta il percorso di origine in modo che punti al codice (se ce l'hai), il percorso del simbolo da indirizzare a .map e .pdb e il percorso dell'immagine all'exe e digita "! Analyze -v" nella riga di comando . Ora hai una traccia stack completa con linee di codice e tutto.
È ancora meglio avere il server dei simboli MS nel percorso e se l'heap della pagina completa è stato attivato o è in esecuzione l'adplus. Vedere queste due risorse preferite WinDBG di mine:
Prima tappa :: http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx
Forza caricare i simboli :: http://www.osronline.com/ShowThread.cfm?link=182377
sito Utile :: http://www.dumpanalysis.org/blog/index.php/category/windbg-tips-and-tricks/page/7/
mappe Linker può essere molto utile in progetti di grandi dimensioni, quando è necessario tenere traccia dipendenze tra unità di compilazione e librerie. In genere, un linker segnala un simbolo che ha causato problemi e, molto spesso, una semplice ricerca di questo nome simbolo non restituisce alcun risultato (o restituirà tonnellate di falsi positivi per simboli come read
).
Senza una mappa del linker, l'unica opzione disponibile è di analizzare tutti i file di origine disponibili (dopo il passaggio di pre-elaborazione se sono stati utilizzati macro, che è in genere il caso) e sperare di trovare il punto pertinente.
Le mappe dei collegamenti di solito hanno una sezione chiamata "riferimento per file/simbolo" che indica quale file oggetto è stato richiesto da un altro file oggetto del progetto e quale simbolo è stato referenziato.
Una volta stavo lavorando a un progetto che doveva essere portato su un sistema senza supporto locale. Il linker riportava "errori di riferimento non definiti a _localeconv_r
", il che sarebbe stato un problema da rintracciare cercando tra le fonti. Fortunatamente, un file di mappa del linker GCC generato con -Map=output.map
ha rivelato tutte le funzioni problematiche con una singola ricerca.
- 1. Qual è il __NULL_IMPORT_DESCRIPTOR buono per (file MSVC map)?
- 2. Corrispondenza sfocata dei nomi dei prodotti
- 3. Qual è lo scopo dei file pdb?
- 4. Qual è il significato dei file dylib?
- 5. Qual è lo scopo dei file .edmx?
- 6. Qual è il formato dei file `* .ni.dll.aux`?
- 7. Importazione di un simbolo dal file C nello script linker
- 8. Stima dei prezzi dei prodotti/stima dei costi
- 9. Qual è l'equivalente del flag --wrap linker di GNU in OS X linker?
- 10. Qual è il modo migliore per creare prodotti interni?
- 11. Qual è la differenza tra linker dinamico e caricatore dinamico?
- 12. Errore di collegamento/Build/Prodotti/File debug-iphonesimulator non trovato
- 13. Perché i file ".png" prodotti da ImageMagick sono molto più grandi dei file ".jpg" e ".gif"?
- 14. WooCommerce: ricerca dei prodotti nella banca dati
- 15. Magento: aggiornamento dei cataloghi dei prodotti più veloce
- 16. Qual è il formato (schema) dei file PDB .NET?
- 17. Qual è lo scopo dei file xml accanto alla dll?
- 18. Qual è l'ordine corretto di caricamento dei file AngularJS?
- 19. Qual è lo scopo dei file exe nei progetti MVC5?
- 20. Disabilita la descrizione breve nella lista dei prodotti Prestashop1.6
- 21. Qual è il ruolo dei file .s in un progetto C?
- 22. Recupero dei parametri dal file delle proprietà
- 23. Ottieni l'elenco dei file dal server FTP
- 24. Qual è l'equivalente Objective-C della funzione `map()` di JS?
- 25. Qual è la differenza tra hash-map e array-map in clojure?
- 26. Come modellare le valutazioni dei prodotti nel database?
- 27. Hazelcast Map è bloccata
- 28. file di compilatore PDB e il linker PPB il file
- 29. Errore linker file di grasso troncato
- 30. Qual è l'impatto proveniente dal carattere jolly%
GNU Gas genera file '.map' con' -a'. –