Chciałbym gdb
natychmiast uruchomić plik wykonywalny, tak jakbym napisał „run” (motywacja: nie lubię pisać „run”).
Jednym ze sposobów jest potokowanie polecenia w gdb
ten sposób:
$ echo run | gdb myApp
Ale problem z tym podejściem polega na tym, że tracisz interaktywność z gdb
np. jeśli punkt przerwania wyzwala lub myApp
ulega awarii, gdb
kończy działanie. Ta metoda jest omawiana tutaj .
Patrząc na opcje w --help
, nie widzę sposobu, aby to zrobić, ale być może czegoś mi brakuje.
./a.out a b
gdb -x
w systemach Linux. OS X używa LLVM i clang, więc sprawdź możliwości debugowanialldb
.Użyłbym skryptu gdb:
gdzie twój-skrypt zawiera coś takiego:
potem masz normalny interaktywny znak zachęty gdb
EDYCJA :
oto optymalizacja dla naprawdę leniwych:
.gdbinit
wworking directory
.Następnie po prostu uruchom gdb jako
gdb
... a gdb automatycznie ładuje i wykonuje zawartość .gdbinit.
źródło
fg
por
linii, działa tostart
Komenda zapewnia skrót dob
+r
: stackoverflow.com/a/2119606/895245Kot pozwala na pisanie dalej po przerwach w gdb.
źródło
Make breakpoint pending on future shared library load? (y or [n])
automatycznie przyjmują odpowiedź „Nie”.start
KomendaTo polecenie jest kolejną dobrą opcją:
To jest jak bieg, ale także ustawia tymczasowy punkt przerwania
main
i zatrzymuje się tam.Ten tymczasowy punkt przerwania jest dezaktywowany po trafieniu.
starti
Istnieje również powiązanie,
starti
które uruchamia program i zamiast tego zatrzymuje się na pierwszej instrukcji, zobacz także: Zatrzymanie na pierwszej instrukcji kodu maszynowego w GDBŚwietnie, gdy robisz coś na niskim poziomie.
źródło
gdb -x <(echo run) --args $program $args
źródło