2011-06-15 15 views
5

Estoy teniendo algunos problemas con una gran biblioteca estática (Lib) de archivos, y estoy sospechando código hinchazón del uso indiscriminado de clases de plantilla. Quiero analizar los símbolos en la biblioteca para confirmar cuáles son la mayor parte del tamaño del archivo.utilidad para el análisis de símbolos en un archivo de biblioteca

Cuando vinculo mi ejecutable con esta biblioteca, la salida resultante es mucho más sensible, en cuanto al tamaño (aproximadamente 20Mb), por lo que el enlazador obviamente está eliminando muchos símbolos redundantes. Quiero saber cuál es su eliminación ...

Sé que puedo usar dumpbin para generar símbolos y encabezados, pero, con la biblioteca en cuestión siendo bastante grande (900Mb), este volcado es prácticamente inutilizable sin una utilidad para analizar e informar sobre eso.

Obviamente, yo podría escribir esto mismo, pero se preguntaba si alguien puede recomendar ningún programa gratuito ya disponible para esto?

Respuesta

1

encontré uno (SymbolSort) que funciona muy bien, me da exactamente lo que necesito:

1

¿Es esta su propia biblioteca? Si es así, puede generate a link map que describe el diseño del código en la biblioteca, lo que le daría la información que necesita aquí en una forma más amigable.

Si no tiene acceso al código fuente para hacer esto, puede usar Perl u otras herramientas de scripting de código abierto para descifrar la salida dumpbin.

EDIT: también se puede dar un giro LibDump, es descargable desde here. No he usado esto yo mismo.

+0

Will que me muestran todos los símbolos que son despojados a cabo por el enlazador? – StevieG

+0

No estoy seguro de qué quiere decir con eso. Le mostrará dónde comienza cada función y qué tan grande es, ¿no es eso lo que quiere? –

+0

Según tengo entendido, hay muchos más símbolos en el archivo .lib que los que realmente usará el ejecutable, ya que el vinculador elimina todos los símbolos no utilizados (a menos que me equivoque?). Necesito ver todos los símbolos en el archivo .lib, no solo los que usa el ejecutable. Me pregunto si la construcción de un mapa de enlaces en tiempo de enlace me dará esto, o solo un mapa de lo que usa el .exe resultante. – StevieG

Cuestiones relacionadas