nm
Common Usage
$ nm # is equivalent to $ nm a.out
# output format: <symbol value>, <symbol class>, <symbol name> $ nm a.o # sort in a reversed order $ nm -r a.o $ nm --reverse-sort a.o
sort by size
# output format: <symbol size>, <symbol class>, <symbol name> # <symbol size> means the size of the object which the symbol points to # will not output undefined symbols $ nm --size-sort a.o $ nm --size-sort -r a.o # include <symbol value> in the output $ nm --size-sort -S a.o
output format (bsd
by default)
# SysmtemV $ nm -f sysv a.o # POSIX $ nm -f posix a.o
# [-A | -o | --print-file-name] # show the source file names of symbols when processing multiple object files $ nm -A *.o | grep <symbol> # show the source file names of symbols when processing static linkage library $ nm -A /usr/lib/libc.a
show dynamic symbols
$ nm -D a.out $ nm --dynamic a.out
Symbol Class
section | symbol class | scope |
text | T | global |
t | local | |
data | D | global |
d | local | |
G | global, for small objects (有些环境下使用近距离symbol的效率更高) | |
g | local, for small objects (有些环境下使用近距离symbol的效率更高) | |
read-only | R | global |
r | local | |
bss | B | global |
b | local | |
S | global, for small objects | |
s | local, for small objects | |
weak object | V | global |
v | local | |
weak symbol | W | global |
w | local | |
share | C | global |
debug info | N | global |
n | local | |
- | stabs | |
absolute value | A | global |
a | local | |
undefined | U | global |
indirect references | I | global |
i | local | |
unknown | ? |
demangle
$ nm foo.o 00000000 T _Z3fooi $ nm foo.o | c++filt 00000000 T foo(int) $ nm --demangle foo.o 00000000 T foo(int)