2011-06-15 15 views
5

Sto riscontrando alcuni problemi con un file di librerie statiche (.lib) di grandi dimensioni e sospetto che il codice sia gonfiato dall'uso indiscriminato delle classi di modelli. Voglio analizzare i simboli nella libreria per confermare quali sono la maggior parte delle dimensioni del file.Utilità per analizzare i simboli in un file di libreria

Quando collego il mio eseguibile a questa libreria, l'output risultante è molto più sensato, in termini di dimensioni (circa 20 Mb), quindi il linker sta ovviamente eliminando molti simboli ridondanti. Voglio scoprire che cosa sta rimuovendo ..

So che posso usare il dumpbin per generare i simboli e le intestazioni, ma, con la libreria in questione è piuttosto grande (900 Mb), questo dump è praticamente inutilizzabile senza un'utilità per analizzare e riferire su di esso.

Ovviamente potrei scrivere da solo, ma mi chiedevo se qualcuno può raccomandare qualche freeware già disponibile per questo?

risposta

1

ho trovato uno (SymbolSort) che funziona davvero bene, mi dà esattamente quello che mi serve:

1

Questa è la tua libreria? Se è così puoi generate a link map che descrive il layout del codice nella libreria, che ti darebbe le informazioni che ti servono qui in una forma più amichevole.

Se non si dispone dell'accesso al codice sorgente per eseguire questa operazione, è possibile utilizzare Perl o altri strumenti di scripting open source per decifrare l'output dumpbin.

MODIFICA: si può anche dare un giro a LibDump, è scaricabile dal here. Non l'ho usato da solo.

+0

Volontà che mi mostra tutti i simboli che vengono eliminati dal linker? – StevieG

+0

Non sono sicuro che vuoi dire con questo. Ti mostrerà dove inizia ogni funzione e quanto è grande - non è quello che vuoi? –

+0

A quanto ho capito, ci sono molti più simboli nel file .lib che verranno effettivamente utilizzati dall'eseguibile, poiché il linker rimuove tutti i simboli non utilizzati (a meno che non mi sbagli?). Ho bisogno di vedere tutti i simboli nel file .lib, non solo quelli usati dall'eseguibile - mi chiedo solo se costruire una mappa di collegamenti al momento del collegamento mi darà questo, o solo una mappa di ciò che viene usato dal risultato .exe – StevieG

Problemi correlati