Я бы хотел gdb
сразу запустить исполняемый файл, как если бы я набрал «запустить» (мотивация: мне не нравится печатать «запустить»).
Один из способов - передать команду gdb
так:
$ echo run | gdb myApp
Но проблема с этим подходом в том, что вы теряете интерактивность gdb
, например. если срабатывает точка останова или происходит myApp
сбой, gdb
завершается работа. Этот метод обсуждается здесь .
Глядя на варианты --help
, я не вижу способа сделать это, но, возможно, я что-то упускаю.
./a.out a b
gdb -x
в системах Linux. OS X использует LLVM и clang, поэтому ознакомьтесь с возможностями отладкиlldb
.Я бы использовал gdb-скрипт:
где your-script содержит что-то вроде:
после этого у вас будет обычная интерактивная подсказка gdb
ИЗМЕНИТЬ :
вот оптимизация для истинно ленивых:
.gdbinit
вworking directory
.После этого вы просто запускаете gdb как
gdb
... и gdb автоматически загружает и выполняет содержимое .gdbinit.
источник
fg
послеr
строки, действует разумноstart
предоставляет ярлык дляb
+r
: stackoverflow.com/a/2119606/895245Кот позволяет вам продолжать печатать после того, как GDB прерывается.
источник
Make breakpoint pending on future shared library load? (y or [n])
автоматически предполагают ответ «Нет».start
командаЭта команда - еще один хороший вариант:
Это похоже на запуск, но также устанавливает временную точку останова
main
и останавливается на ней.Эта временная точка останова деактивируется после ее достижения.
starti
Существует также связанный,
starti
который запускает программу и вместо этого останавливается на самой первой инструкции, см. Также: Остановка на первой инструкции машинного кода в GDBОтлично, когда вы делаете что-то низкое.
источник
gdb -x <(echo run) --args $program $args
источник