Сначала создайте тривиальную программу:
g++ -g -xc++ - <<< 'int main() {throw "hi";}'
Это приводит к a.out
, который преднамеренно завершает работу при запуске.Попробуйте отладить его:
gdb -batch -ex start -ex continue ./a.out
Ожидаемый вывод выглядит примерно так:
Temporary breakpoint 1, main () at <stdin>:1
1 <stdin>: No such file or directory.
terminate called after throwing an instance of 'char const*'
Program received signal SIGABRT, Aborted.
0x00007ffff71ad1f7 in raise () from /lib64/libc.so.6
Но в Ubuntu 18.04 (с GDB 8.1) выводится предупреждение и start
Сбой команды:
Warning:
Cannot insert breakpoint 1.
Cannot access memory at address 0x4005c7
Command aborted.
Как я могу сказать GDB остановить мою программу в самом начале?