GDB игнорирует мои контрольные точки
Мой тестовый пример настолько прост, что я должен делать что-то очень глупое. Я написал простой исходный файл:test.c
#include
int main(int argc,char* argv[]){
printf("1\n");
printf("2\n");
printf("3\n");
return 0;
}
Я скомпилировал это сgcc -g test.c
и начал GDB сgdb a.out
, Затем я создал точку останова вmain
сbreak main
и побежал сrun
(также пробовал сstart
) - но GDB просто проигнорировал мою точку останова!
Это сессия оболочки я пытаюсь скомпилироватьtest.c
и запустить GDB:
[idanarye@idanarye_lg gdbtest]$ gcc -g test.c
[idanarye@idanarye_lg gdbtest]$ gdb a.out
GNU gdb (GDB) 7.6.1
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
...
Reading symbols from /home/idanarye/gdbtest/a.out...done.
(gdb) break main
Breakpoint 1 at 0x40050f: file test.c, line 4.
(gdb) run
Starting program: /home/idanarye/gdbtest/a.out
1
2
3
During startup program exited normally.
(gdb)
Что в мире я делаю здесь неправильно?
Я использую 64-битную версию Arch Linux. Моя версия GCC 4.8.2.
ОБНОВИТЬ
Вот результат:disas main
Dump of assembler code for function main:
0x0000000000400500 : push %rbp
0x0000000000400501 : mov %rsp,%rbp
0x0000000000400504 : sub $0x10,%rsp
0x0000000000400508 : mov %edi,-0x4(%rbp)
0x000000000040050b : mov %rsi,-0x10(%rbp)
0x000000000040050f : mov $0x4005c4,%edi
0x0000000000400514 : callq 0x4003e0
0x0000000000400519 : mov $0x4005c6,%edi
0x000000000040051e : callq 0x4003e0
0x0000000000400523 : mov $0x4005c8,%edi
0x0000000000400528 : callq 0x4003e0
0x000000000040052d : mov $0x0,%eax
0x0000000000400532 : leaveq
0x0000000000400533 : retq
End of assembler dump.
ОБНОВИТЬНе знаю, как или почему, но это работает сейчас. Вероятно, обновление системы исправило это ... »