Mam program, który pobiera dane wejściowe ze stdin, a także pobiera niektóre parametry z wiersza poleceń. To wygląda tak:
cat input.txt > myprogram -path "/home/user/work"
Próbuję debugować kod z gdb wewnątrz emacsa, przez Mx gdb, próbuję załadować program poleceniem:
gdb cat input.txt > myprogram -path "/home/user/work"
Jednak gdb tego nie lubi.
Pytanie zaczerpnięte stąd . Niestety nie rozumiem rozwiązania i nie jestem pewien co zrobić poza kompilacją z -g
opcją i uruchomieniem polecenia Mx gdb.
emacs
gdb
redirect
command-line-arguments
vinc456
źródło
źródło
<
iinput.txt
jakoargv
argumenty do mojego programu :( Będę dalej kopać wokół tych odpowiedzi za pomocą mojego gdb 8.2.1: stackoverflow.com/questions/3544325/ ...Można to zrobić na kilka sposobów:
lub
lub
gdzie
run
polecenie gdb (r
) domyślnie używa argumentów ustawionych wcześniej wset args
.źródło
gdb -ex 'r -path /home/user/work < input.txt' myprogram
w trzecim wariancie?gdb -ex 'b main' -ex 'r -path /home/user/work < input.txt' myprogram
.Ze względu na kompletność podczas rozpoczynania sesji debugowania dostępna jest również opcja --args. to znaczy)
źródło
gdb --args yourprog.out input.txt
A jeśli nie musisz debugować od samego początku, możesz również dołączyć do już działającego procesu, używając:
gdzie xxx to identyfikator procesu. Wtedy nie musisz podawać gdb argumentów początkowych.
źródło