分类: LINUX
2010-09-27 13:28:10
|
2) 反汇序,并生成文件dump
objdump -d ./a.out >> dump |
3) 编译运行,程序报错
BTC:/home/code/test # gcc -g main.c BTC:/home/code/test # ./a.out 5 stack frames. ./a.out [0x804852d] [0xffffe420] ./a.out [0x80485d6] /lib/libc.so.6(__libc_start_main+0xdc) [0xb7e6587c] ./a.out [0x8048491] |
4) 查看报错信息
【./a.out [0x804852d]】 在栈顶,是信号响应函数,不用管。
注意【./a.out [0x80485d6]】并在dump文件中查找80485d6这个地址:
080485ac <main>:
80485ac: 8d 4c 24 04 lea 0x4(%esp),%
"COLOR: #ff0000">ecx
80485b0: 83 e4 f0 and $0xfffffff0,%esp
80485b3: ff 71 fc pushl 0xfffffffc(%ecx)
80485b6: 55 push %ebp
80485b7: 89 e5 mov %esp,%ebp
80485b9: 51 push %ecx
80485ba: 83 ec 14 sub $0x14,%esp
80485bd: c7 44 24 04 14 85 04 movl $0x8048514,0x4(%esp)
80485c4: 08
80485c5: c7 04 24 0b 00 00 00 movl $0xb,(%esp)
80485cc: e8 0f fe ff ff call 80483e0 <signal@plt>
80485d1: e8 c1 ff ff ff call 8048597 <fun_err>
80485d6: 83 c4 14 add $0x14,%esp
注意最后两行。这就是出错的函数。