2009-11-10 10 views
18

W bash, mogę użyć komendy script, który wysypisk wszystko, co pokazuje na powłoce do pliku, w tym:Jak zrzucić całą sesję GDB do pliku, w tym polecenia, które wpisuję i ich dane wyjściowe?

  • poleceń wpisywanych
  • linia PS1
  • stdout i stderr poleceń

Co to jest odpowiednik w gdb?

Próbowałem uruchomić shell script z poziomu GDB, ale po tym, jak uderzyłem, znalazłem się w powłoce i straciłem polecenie powłoki i nie mogłem już uruchomić polecenia. Ponadto nie mogłem użyć klawiszy ctrl + c lub ctrl + \, aby wyjść. Musiałem wymusić zabicie /bin/login tty2, aby wyjść.

+1

można zakładać przykład co próbował? Zrzut ekranu z krótkim wyjaśnieniem? Co oznacza "W powłoce mogę używać skryptu do wyodrębniania tekstu"? Czy uruchamiasz skrypt w pliku, aby wyodrębnić tekst, czy używasz przekierowania powłoki (>), aby wyodrębnić tekst? –

+0

skrypt to polecenie służące do rejestrowania wyjścia powłoki do pliku maszynopisu. – Jichao

+1

@AaronDigulla Nie wiedziałem o 'skrypcie', jest to (okropnie generalnie nazwany) plik wykonywalny z linux-util. Wyjaśniłem, co robi. –

Odpowiedz

31

Jeśli chcesz rejestrować dane wyjściowe GDB, możesz użyć wartości GDB logging output commands, np.

set logging file mylog.txt 
set logging on 

Jeśli chcesz przekierować wyjście programu do pliku, możesz użyć przekierowania, np.

run myprog > mylog.txt 

zobaczyć chapter on program IO in the GDB manual więcej informacji

+0

link jest uszkodzony i powinien być http://sourceware.org/gdb/current/onlinedocs/gdb/Logging-Output.html#Logging-Output. – Jichao

0

Zapoznaj się z dokumentacją GDB. Wyszukaj "Konsekwentne sekwencje poleceń". Istnieje sposób na zapisanie poleceń GDB w pliku i uruchomienie ich za pomocą komendy source. W tych skryptach można użyć niektórych poleceń GDB, aby wydrukować informacje dostępne dla GDB (np. echo, output i printf).

Jeśli chcesz, aby dane wyjściowe w pliku, użyj set logging file FILE.

2
  • Utwórz plik tekstowy, czyli gdbCommands.txt, z następującymi poleceniami

set logging on my_log_file\nbt 10\nq

bt 10 wskazuje liczbę linii (wywołania funkcji), których potrzebujemy z śledzenia wstecznego, w naszym przykładzie jest 10 linii.

  • Execute gdb pomocą następującego polecenia, zakładając, że plik zrzutu pamięci core.2345

gdb -x gdbCommands.txt myApp core.2345

  • Otwórz my_log_file i sprawdzić ślad!

howto-redirect-gdb-backtrace-output-to-a-text-file

+1

Chociaż może to teoretycznie odpowiedzieć na pytanie, [byłoby lepiej] (http://meta.stackexchange.com/q/8259), aby uwzględnić istotne części odpowiedzi tutaj, i podać link do odniesienia. W przeciwnym razie ludzie mogą głosować lub odrzucać tę odpowiedź. – joran

+0

Dziękujemy za informacje :) – hackhowtofaq

+3

Dziękujemy za zamieszczenie odpowiedzi! Pamiętaj, aby uważnie przeczytać [FAQ na temat autopromocji] (http://stackoverflow.com/faq#promotion). Należy również pamiętać, że * wymagane * jest to, że publikujesz zrzeczenie się za każdym razem, gdy łączysz się z własną witryną/produktem. –

Powiązane problemy