Jest to w pewnym stopniu powiązane z gdb ustaw nadpisywanie logowanie powinno nadpisywać gdb.txt poprawnie? .

Powiedzmy, że prowadzę sesję jakiejś aplikacji. Na przykład dla celów, pozwólcie mi ponownie wziąć przykład qbittorrent.

Jak wspominaliśmy wcześniej, tak przebiega uruchamianie –

$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run 

Jednym ze znanych mi sposobów jest prawidłowe zamknięcie aplikacji, ale czasami aplikacja się zawiesza / zajmuje zbyt dużo czasu lub po prostu nie odpowiada.

Wtedy jedyną opcją, która mi pozostaje, jest użycie CTRL+C, które, jeśli dobrze rozumiem, zabija podstawową aplikację , w naszym przykładzie qbittorrent, a następnie jestem w stanie zamknąć gdb za pomocą

(gdb) quit 

Czy istnieje inny sposób na zamknięcie aplikacji i nadal pozwolę Sesja gdb działa dalej lub jedynym sposobem jest surowy sposób, o którym wspomniałem powyżej.

AFAWiem, że zabicie procesu aplikacji powinno być ostatnim rozwiązaniem, a nie pierwszym.

Komentarze

  • Podczas uruchamiania pod gdb przy ustawieniach domyślnych, Ctrl-C nie zabija aplikacji, po prostu włamuje się do debugera, w którym możesz zdecydować co zrobić. Użyj cont do " połknąć " sygnał, a aplikacja działa bez zakłóceń. Lub użyj signal 2, aby przekazać SIGINT (2) do aplikacji. Lub użyj kill, aby zamknąć aplikację.

Odpowiedź

Możesz użyć do tego sygnałów. Przed uruchomieniem programu skonfiguruj USR1 lub USR2 tak, aby przerywał gdb bez wpływu na program:

handle SIGUSR1 nopass 

Następnie możesz uruchomić swój program, a kiedy chcesz go zatrzymać, wykonaj kill -USR1 z inna powłoka z odpowiednim (podrzędnym) numerem pid. gdb wstrzyma aplikację, a następnie możesz dodać punkty przerwania, sprawdzić stan itp., a jeśli chcesz, kontynuować wykonywanie za pomocą cont.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *