Gdb - Как автоматически запустить исполняемый файл?

Я бы хотел, чтобы gdb сразу запустил исполняемый файл, как если бы я набрал "run", (мотивация: мне не нравится вводить "run" ).

Один из способов - передать команду gdb следующим образом:

$ echo run | gdb myApp

Но проблема с этим подходом заключается в том, что вы теряете интерактивность с gdb, например. если срабатывает точка останова или myApp, gdb завершает работу. Этот метод обсуждается здесь.

Глядя на опции в --help, я не вижу способа сделать это, но, возможно, мне что-то не хватает.

Ответ 1

gdb -ex run ./a.out

Если вам нужно передать аргументы a.out:

gdb -ex run --args ./a.out arg1 arg2 ...

EDIT: Orion говорит, что это не работает на Mac OSX.

Флаг -ex доступен с GDB-6.4 (выпущен в 2005 году), но OSX использует Apple для вилки GDB, а последний XCode для Leopard содержит GDB 6.3.50-20050815 (Apple version gdb-967), поэтому вам не повезло.

Построение тока GDB-7.0.1 - одно из возможных решений. Просто не забудьте прочитать это.

Ответ 2

Я бы использовал gdb- script:

gdb -x your-script

где your- script содержит что-то вроде:

file a.out
b main
r

после этого у вас есть обычная интерактивная подсказка gdb

ИЗМЕНИТЬ

вот оптимизация для действительно ленивых:

  • сохраните script как .gdbinit в working directory.
  • После этого вы просто запускаете gdb как

    gdb

... и gdb автоматически загружает и выполняет содержимое .gdbinit.

Ответ 3

(echo r ; cat) | gdb a.out

Кошка позволяет вам печатать после разрыва gdb.

Ответ 4

start - еще один хороший вариант:

gdb -ex start ./a.out

Это похоже на run, но также устанавливает временную точку останова в main и останавливается там.

Эта временная точка останова деактивируется после ее удара.

Ответ 5

gdb -x <(echo run) --args $program $args