Команда GDB «start» завершается неудачно с «Cannot вставка точки останова 1» и «Cannot доступ к памяти по адресу» - PullRequest
0 голосов
/ 08 мая 2019

Сначала создайте тривиальную программу:

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 остановить мою программу в самом начале?

1 Ответ

0 голосов
/ 08 мая 2019

В GDB 8.1 добавлена ​​новая команда starti, которая решает эту проблему.Это останавливает программу при первой инструкции, в отличие от start, который устанавливает точку останова на main(), но больше не работает.

...