In Linux, è possibile utilizzare nm
per mostrare tutti i simboli nel eseguibile e per ordinarli in ordine inverso per dimensione:
$ nm -CSr --size-sort <exe>
Opzioni:
-C
demangles C++ nomi.
-S
mostra la dimensione dei simboli.
--size-sort
ordina i simboli per dimensione.
-r
inverte l'ordinamento.
Se si desidera ottenere i risultati per namespace o per classe, si può solo grep
l'uscita per 'namespace::
', 'namespace::class_name::
', ecc.
Se si desidera visualizzare solo i simboli definiti in nell'eseguibile (non quelli definiti altrove, come nelle librerie), aggiungere --defined-only
. L'ordinamento per dimensione dovrebbe occuparsi di questo, tuttavia, poiché i simboli indefiniti non avranno dimensioni.
Per Windows, si dovrebbe comunque essere in grado di utilizzare nm
sui vostri file binari, poiché nm
supporta COFF binari. È possibile installare nm
tramite cygwin, oppure copiare il file eseguibile di Windows in un box Linux ed eseguire nm
su di esso.
Si potrebbe anche provare dumpbin
, che scarica informazioni su un file binario su Windows. Puoi ottenere informazioni sui simboli con lo switch /SYMBOLS
, ma non sembra che fornisca direttamente informazioni sulla loro dimensione.
Nel caso qualcuno si stia chiedendo, si è scoperto che Flite (un motore di sintesi vocale) era di gran lunga il componente più grande dei 4 MB a 1,8 MB IIRC, che ho scoperto rimuovendolo. – Qwertie