Podczas uruchamiania programu w GDB zwykle argumenty programu są podawane w run
poleceniu. Czy istnieje sposób na uruchomienie programu przy użyciu GDB i podanie argumentów w skrypcie powłoki?
Zobaczyłem odpowiedź w powiązanym pytaniu, mówiąc, że możemy dołączyć GDB do programu po uruchomieniu skryptu. Ale wtedy będę musiał „poczekać” na program.
Czy jest na to inny sposób?
Odpowiedzi:
Możesz uruchomić gdb z parametrem --args,
Jeśli chcesz, aby działał automatycznie, umieść niektóre polecenia w pliku (np. „Uruchom”) i podaj jako argument: -x / tmp / cmds. Opcjonalnie możesz uruchomić w trybie -batch.
źródło
man gdb
nie zawiera--args
, dlatego go nie znalazłem.gdb --help
robi.info gdb
następnym razem :-).info
. Jeśli Google lub Stack Overflow przestanie działać XDindex-search
). Spróbuj:info gdb
następnie „i”, a następnie „--args”. Doprowadzi cię do tego.-ex=r
jest skrótem od-ex=run
i mówi gdb, aby natychmiast uruchomił twój program, zamiast czekać na wpisanie „run” w wierszu polecenia. Następnie--args
mówi, że wszystko, co następuje, to polecenie i argumenty, tak jak zwykle wpisujesz je w wierszu polecenia.źródło
-exe=r
bardzo przydatnym!Innym sposobem na zrobienie tego, co osobiście uważam za nieco wygodniejsze i intuicyjne (bez konieczności zapamiętywania
--args
parametru), jest kompilacja normalna i używanier arg1 arg2 arg3
bezpośrednio z wewnątrzgdb
, na przykład:źródło
Możesz utworzyć plik z kontekstem:
I zadzwoń do gdb jak
źródło
gdb ma
--init-command <somefile>
tam, gdzie jakiś plik ma listę poleceń gdb do uruchomienia, używam tego, aby mieć//GDB
komentarze w moim kodzie, a następnie `jako skrypt, który umieszcza polecenie w celu załadowania symboli debugowania, a następnie generuje listę poleceń przerwania w celu ustalenia punktu przerwania dla każdego
//GDB
komentarza i uruchamia goźródło
Jeśli
--args
parametr nie działa na twoim komputerze (tj. W Solarisie 8), możesz uruchomić gdb jakMożesz to połączyć z wprowadzeniem pliku do standardowego wejścia i „natychmiastowym uruchomieniem”:
źródło
Oprócz odpowiedzi Hugo Ideler. Używając argumentów mających sam prefiks, takich jak
--
lub-
, nie byłem pewien, czy mam konflikt z jednym z gdb.Wygląda na to, że gdb zajmuje wszystko
args
opcję jako argumenty dla programu.Na początku chciałem się upewnić, uruchomiłem gdb z cytatami wokół twoich argumentów, jest on usuwany przy uruchomieniu.
To też działa, ale opcjonalnie:
To nie działa:
W takim przypadku
-tui
jest używany jako parametr mojego programu, a nie jako gdb.źródło
O wiele za późno, ale tutaj jest metoda, która działa podczas
gdb
sesji.następnie
Zwróci to wiele dopasowań, przydatnym jest
set args
.następnie
Spowoduje to uruchomienie programu, przekazując do argumentu main (argc, argv) argumenty i liczbę argumentów.
źródło