Gdb 无法设置断点

Gdb 无法设置断点,gdb,buffer-overflow,disassembly,Gdb,Buffer Overflow,Disassembly,我正在尝试获取buf的起始地址。因此,我编译以下程序并将其加载到gdb中 #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char buf[128]; if(argc < 2) return 1; strcpy(buf, argv[1]); printf("%s\n", buf); return 0; } 为了找到bu

我正在尝试获取
buf
的起始地址。因此,我编译以下程序并将其加载到gdb中

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {
    char buf[128];
    if(argc < 2) return 1;
    strcpy(buf, argv[1]);
    printf("%s\n", buf);    
    return 0;
}
为了找到buf的起始地址,我需要查看加载到
eax
中的地址。当我在
0x080483e5
0x080483ee
设置断点时,我得到以下结果

(gdb) b 0x080483eb
Function "0x080483eb" not defined.
Make breakpoint pending on future shared library load? (y or [n])     
(gdb) run test
Starting program: /levels/level05 test
test

Program exited normally.

我做错了什么?为什么程序执行不在该地址暂停?

如果要在地址设置断点,必须说
b*0x080483eb
有关更多信息,请参阅

您还应该使用-g编译程序,而不进行优化。您只需
中断main
即可在到达main时停止,使用
n
步进几行,然后使用
p buf
打印
buf

(gdb) b 0x080483eb
Function "0x080483eb" not defined.
Make breakpoint pending on future shared library load? (y or [n])     
(gdb) run test
Starting program: /levels/level05 test
test

Program exited normally.