作者lungswu (宅爸爸)
看板LinuxDev
標題Re: [問題] gdb 下斷點
時間Mon Feb 22 14:38:11 2010
※ 引述《zha0 (這個帳號是掛網用)》之銘言:
: ; hello.asm
: ; nasm -f elf -o hello.o hello.asm
: ; ld -o hello hello.o
: section .text
: global _start
: _start:
: mov edx, len
: mov ecx, msg
: mov ebx, 1
: mov eax, 4
: int 0x80
: mov eax, 1
: int 0x80
: section .data
: msg db 'Hello world!', 0xa
: len equ $-msg
: ----------------------------------------------
: [root@localhost ~]# readelf -h hello
: ELF Header:
: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
: Class: ELF32
: Data: 2's complement, little endian
: Version: 1 (current)
: OS/ABI: UNIX - System V
: ABI Version: 0
: Type: EXEC (Executable file)
: Machine: Intel 80386
: Version: 0x1
: Entry point address: 0x8048080
: ........
: ----------------------------------------------
: [root@localhost ~]# gdb hello
: ...
: (gdb) disas 0x8048080
: Dump of assembler code for function _start:
: 0x08048080 <_start+0>: mov $0xd,%edx
: 0x08048085 <_start+5>: mov $0x80490a0,%ecx
: 0x0804808a <_start+10>: mov $0x1,%ebx
: 0x0804808f <_start+15>: mov $0x4,%eax
: 0x08048094 <_start+20>: int $0x80
: 0x08048096 <_start+22>: mov $0x1,%eax
: 0x0804809b <_start+27>: int $0x80
: End of assembler dump.
: (gdb) b *0x8048080
: Breakpoint 1 at 0x8048080
: (gdb) r
: Starting program: /root/hello
: (no debugging symbols found)
: Hello world!
: Program exited with code 01.
: (gdb)
: 為什麼在 0x8048080 下了斷點,但使用 r 執行都不會停在該斷點上呢 ?
怪怪...我寫了一個測試程式,初步判斷根library連結有關
首先程式內容...
$ cat foo.s
.text
.globl _start
_start:
movl $0,%ebx /* exit code */
movl $1,%eax /* exit function */
int $0x80
再來不同的編譯方式....
$ # 編譯方式(1)
$ as foo.s -o foo.o
$ ld foo.o -o foo
$ # 編譯方式(2)
$ gcc -nostartfiles foo.s -o foo
$ # 編譯方式(3)
$ gcc -nostartfiles --static foo.s -o foo
$ # 編譯方式(4)
$ gcc -nostartfiles -nostdlib foo.s -o foo
其中只有第2種編譯方式可以breaking在 _start 的位址。
至於其中的異同,可以用binary utility來觀看...:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.136.145.103
→ lungswu:補充...如果是用nasm,以下的方式也行... 02/22 16:41
→ lungswu:nasm -f elf -o hello.o hello.asm 02/22 16:41
→ lungswu:gcc hello.o -nostartfiles -o hello 02/22 16:42
推 zha0:利害,原來還有這東西 <(_ _)> 02/23 06:33