下载http://www.prevanders.net/dwarf.html
依赖http://directory.fsf.org/wiki/Libelf
dwarf格式文档http://www.dwarfstd.org/Home.php
动态编译
直接./configure,make就好。
静态编译
比较新的版本要替换 optind 和 opterr ,因为会和libc.a冲突
1
2
| find . -name '*.[c|h]' -exec sed -i -e 's/optind/optind_kk/g' {} \;
find . -name '*.[c|h]' -exec sed -i -e 's/opterr/opterr_kk/g' {} \;
|
先动态编译,为了生成libdwarf/libdwarf.a
静态编译
1
2
| rm -rf dwarfdump/dwarfdump
make CFLAGS+="-static -I`pwd`/libdwarf -I`pwd`/dwarfdump" LDFLAGS+="-static -L`pwd`/libdwarf -ldwarf -lelf"
|
使用
1
| ./dwarfdump/dwarfdump -Wc -S match=dev_queue_xmit /tmp/vmlinux
|
获取vmlinux中dev_queue_xmit函数的.debug信息