分类: LINUX
2013-11-21 16:09:20
上周练习内核空间和用户空间通信(procfs)时,写了个小程序,但是在运行可执行文件时时出现了断错误,找了好长时间都没找到。后来在网上看到有用objdump来反汇编可执行文件或者.o文件来进行分析。所以尝试了下:
首先我用的是OpenEmbedded构建的交叉编译环境,必须先保证工程被编译过一次。
objdump的路径:apps_proc/oe-core/build/tmp-eblibc/sysrootfs/x86_64-linux/usr/bin/armv7a-vfp-neon-oe-linux-gnueabi/ar-oe-linux-gnueabi-objdump
使用方法apps_proc/...../ar-oe-linux-gnueabi-objdump -d 二进制文件 。
如果需要c代码与相应的汇编语句相对应起来一起看,可以在编译的时候加上-g选项,然后:apps_proc/...../ar-oe-linux-gnueabi-objdump -dz -S *.ko
反汇编出汇编代码后,使用dmesg查看出现断错误的地址然后对照汇编代码就不难找出来了。