Hello,

I tried this script: http://www.brendangregg.com/DTrace/dappprof (using pid
provider to
construct call graph by tracing function entries/returns), on an ELF binary
with symbol
table (.symtab) stripped away. The Dtrace script was still able to generates
the call
graph with symbolic function names and addresses, for example:

....
  874/1:       450       .      .         ->
ld.so.1:stravl_insert(0xD17C2679, 0x0, 0x0)
  874/1:       450       .      .           -> ld.so.1:pnavl_create(0x18,
0x0, 0x0)
  874/1:       450       .      .             -> ld.so.1:malloc(0x14, 0x0,
0x0)
  874/1:       450       .      .               -> ld.so.1:split(0xD17FEB78,
0x18, 0x0)
  874/1:       450       0      0               <- ld.so.1:split = 79
  874/1:       450       0      0             <- ld.so.1:malloc = 212
  874/1:       450       .      .             ->
ld.so.1:avl_create(0xD17FEB88, 0xD17D2EC0, 0x18)
  874/1:       450       0      0             <- ld.so.1:avl_create = 32
  874/1:       450       0      0           <- ld.so.1:pnavl_create = 66
  874/1:       450       .      .           -> ld.so.1:strlen(0xD17C2679,
0x0, 0x0)
  874/1:       450       0      0           <- ld.so.1:strlen = 85
....

I am really curious and interested to know how the pid provider can figure
out the symbolic
information of the called functions from a stripped program. Could someone
help me
demystify the mechanism?

Thanks in advance.
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to