Question

Il existe de nombreux scripts / outils pour compter la ligne de code, et certains pour compter la taille des fonctions en termes de ligne de code. Mais ici, je cherche un moyen de mesurer la taille de la fonction en termes d’octets de code généré.

Est-ce que quelqu'un connaît un moyen / des outils pour extraire cette information d'un fichier .lib ou .dll?

Par exemple, je sais comment répertorier le nom de la fonction d’un fichier .lib ou .dll, ainsi que leur adresse de départ, mais je n’ai pas encore trouvé le moyen d’obtenir leur empreinte mémoire.

PS: Je cherche une solution sur la plate-forme Windows, mais toute réponse sur un système alternatif est la bienvenue.

Était-ce utile?

La solution

Je ne suis pas sûr que ce soit ce que vous cherchez, mais vous pouvez essayer d'analyser le fichier de carte comme indiqué dans ce tutoriel .

De même, si vous recherchez une solution payante, le ANTS Le profileur de Red-gate est raisonnable.

Autres conseils

Sous Unix, la commande size vous donne des informations à ce sujet:

Black JL: size /usr/lib/libc.so.1
909301 + 32017 + 6731 = 948049
Black JL: size ~/lib/libjl.a
/work1/jleffler/lib/libjl.a[affbak.o]: 4849 + 44 + 4 = 4897
/work1/jleffler/lib/libjl.a[affstd.o]: 5488 + 48 + 4 = 5540
/work1/jleffler/lib/libjl.a[base64.o]: 8772 + 9 + 320 = 9101
/work1/jleffler/lib/libjl.a[basedigit.o]: 841 + 0 + 0 = 841
/work1/jleffler/lib/libjl.a[basename.o]: 996 + 0 + 0 = 996
/work1/jleffler/lib/libjl.a[bitmap.o]: 3876 + 8 + 4096 = 7980
...lots of entries omitted...
Black JL: size ~/bin/sqlcmd.64
169694 + 17728 + 8280 = 195702
Black JL: size cc3e_*.o | so
cc3e_fixed_from_gregorian.o: 1906 + 0 + 0 = 1906
cc3e_gregorian_date.o: 684 + 0 + 0 = 684
cc3e_gregorian_epoch.o: 707 + 0 + 0 = 707
cc3e_gregorian_from_fixed.o: 1729 + 0 + 0 = 1729
cc3e_gregorian_year_from_fixed.o: 1625 + 0 + 0 = 1625
cc3e_last_kday.o: 742 + 0 + 0 = 742
cc3e_nth_kday.o: 1123 + 0 + 0 = 1123
Black JL:

Fichiers semi-aléatoires de mon système - Sun SPARC exécutant Solaris 10, utilisant size à partir de / usr / ccs / bin (pas la version GNU, mais il est susceptible de donner des informations similaires).

GNU taille sous Cygwin dit:

$ size libjl.a
text    data     bss     dec     hex filename
 800      64      16     880     370 affbak.o (ex libjl.a)
1008      64      16    1088     440 affstd.o (ex libjl.a)
 176       0       0     176      b0 basedigit.o (ex libjl.a)
 208       0       0     208      d0 basename.o (ex libjl.a)
 544     320    4096    4960    1360 bitmap.o (ex libjl.a)
 816       0      16     832     340 block.o (ex libjl.a)

Cependant, cela n’aidera peut-être pas beaucoup - lorsqu’il est exécuté sur une DLL (C: \ WINDOWS \ twain.dll), GNU taille indique qu’il ne reconnaît pas le type de fichier. OTOH, il semble comprendre les fichiers '.lib':

jleffler@IBM-027DF09B37F /cygdrive/c/notes/jvm/bin
$ size jawt.lib
   text    data     bss     dec     hex filename
     63      30       0      93      5d jawt.dll (ex jawt.lib)
     63      20       0      83      53 jawt.dll (ex jawt.lib)
     63       8       0      71      47 jawt.dll (ex jawt.lib)
      8      26       0      34      22 jawt.dll (ex jawt.lib)

jleffler@IBM-027DF09B37F /cygdrive/c/notes/jvm/bin
$ ls -l jawt.lib
-rwxrwxrwx+ 1 jleffler None 1692 Oct 25  2007 jawt.lib
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top