Wyświetl i dostęp do wątków w GDB

Wyświetl i dostęp do wątków w GDB
Inną nazwą debuggera byłaby użyteczność debugowania. Wykonując problemy z kodem na różnych fazach systemu operacyjnego lub tworzenia aplikacji, uważa się to za program komputerowy, który może poprawić proces budowania oprogramowania. Przejście próbne mogą zostać zbadane przez niektórych debuggerów w celu ustalenia, które sekcje kodu zostały pominięte. Debugger GNU jest jednym z wielu narzędzi debugujących, które są dostępne dla programistów C i jest największym narzędziem do debugowania. Oferuje niektóre narzędzia, które pozwalają użytkownikowi wyświetlić i ocenić program podczas jego uruchamiania. Kolejną doskonałą funkcją debugowania jest wsparcie wielu języków programowania, w tym C, C ++, ADA, Fortron i Pascal. Poniższe funkcje są dostępne za pośrednictwem GDB podczas debugowania aplikacji wielokrotnych:
  • Może automatycznie wysyłać powiadomienia dla nowo utworzonych wątków.
  • Zapewnia możliwość użycia polecenia wątku-no do przełączania między kilkoma wątkami.
  • Polecenie „wątków informacyjnych” można wykorzystać, aby dowiedzieć się, czy istnieją jakieś aktywne wątki.
  • Korzystając z polecenia „Wątek Zastosuj [ThreadNo] [wszystkie] args”, możemy wysłać to samo polecenie do kilku wątków (lub pochylenia wątków).
  • Aby dowiedzieć się, co się stanie, gdy kod programu ulega awarii podczas wykonywania, zbadaj w aplikacjach C.
  • Tylko pliki binarne lub wykonywalne, które są tworzone podczas procesu kompilacji, są kompatybilne z debuggerem GDB.

Wystarczy wpisać GDB w oknie terminalu, aby uzyskać dostęp do GDB systemu operacyjnego na Ubuntu lub w dowolnym systemie operacyjnym Linux lub Unix. Zrzut ekranu poleceń GDB pokazano na następnej ilustracji. Pokazuje szczegóły dotyczące praw autorskich GDB. Otwarta monit GDB wskazuje informacje dotyczące tego, kiedy jest przygotowany do przyjęcia poleceń. W niektórych konfiguracjach GDB, w których system operacyjny umożliwia wątki, te funkcje nie są jeszcze dostępne. Instrukcje te nie mają wpływu na GDB, które nie pozwala na gwintowanie. Na przykład system, w którym brakuje obsługi wątku, ignoruje wynik zapytania „wątków informacyjnych” i konsekwentnie ignoruje instrukcję wątku.

Musisz tylko wpisać polecenie „rzucić” w terminalu GDB, aby wyjść i zakończyć bieżącą sesję GDB. Możesz zobaczyć instrukcję rezygnacji z debugera GDB, jak pokazano następująco:

Debugger GDB wymyślił wiele poleceń debuggera. Oto kilka przykładowych poleceń, które możemy spróbować użyć debugera GDB:

  1. uruchom lub r -> Wykonuje wykonanie programu od początku do końca.
  2. Break lub b -> służy do umieszczenia punktu przerwania na określonej linii lub zdania.
  3. Wyłącz -> Wyłącza punkt przerwania, który był wcześniej oznaczony.
  4. Włącz -> Umożliwia wyłączony punkt przerwania.
  5. Dalej lub n -> następny wiersz kodu jest uruchomiony, ale unikaj przejścia bezpośrednio do funkcji.
  6. Krok -> Powinieneś przejść do następnej instrukcji i rozpocząć wykonanie funkcji.
  7. Lista lub l -> Wyświetla pełny kod pliku C.
  8. druk lub p -> służy do drukowania wartości zapisanej wcześniej.
  9. Wyjdź lub Q -> Wychodzi z ekranu debugera GDB.
  10. clear -> Służy do usuwania wszystkich zaznaczonych punktów przerwania.
  11. Kontynuuj -> Służy do kontynuowania normalnego wykonywania programu.

Przykład:
Oto mały kod, który wykorzystuje kilka wątków, tworzy je za pomocą metody pthread_create i przekazuje metody wątków. Przykładowy program ma funkcję main (), która tworzy dwa wątki na następującej ilustracji. Obecnie działają trzy wątki, w tym wątek nadrzędny/oryginalny (). Funkcja main () używa funkcji pthread_create () do tworzenia wątków i wywoływania ich po drugiej.

While pętla jest sprawdzana w następującym kodzie, aby sprawdzić, czy wartość zmiennej Count1 jest mniejsza niż 500. Jeśli tak, instrukcja drukowania jest wykonywana, aby wyświetlić ciąg „Wątek 1 jest uruchomiony” obok zmiennej liczby. Wątek jest połączony natychmiast po użyciu polecenia funkcji pthread_ łączących () w tym kodzie.

Użyj następujących wymienionych poleceń, aby skompilować kod za pomocą kompilatora GCC i wyświetl aktywność wątku za pomocą debugera PKB. Poniższy obraz to zrzut ekranu, który pokazuje, że poprzedni kod został pomyślnie skompilowany:

GCC -G Multitreads.c -o multithreads -lpthread

Podczas korzystania z Ubuntu 20.04 System, wpisz następujące polecenie na ekranie terminalu, aby zobaczyć i zbadać wątek.

$ gdb ./Multitreads

Teraz jesteśmy w trybie debugowania GDB, dzięki oknie terminalu. Aby ustalić punkty przerwania na głównej, użyj wątku druga i trzech procedur każdego nowo uformowanego wątku. Aby wstawić punkt przerwania, używamy następującego kodu wymienionego. To proste polecenie; Po prostu wpisz przerwę. Następnie napisz nazwę metod wątku, aby wstawić punkty przerwania. Ta metoda wyświetla numer linii, w którym punkty przerwania zostały dodane po wejściu.

Aby uruchomić program, użyj słowa kluczowego „Uruchom” lub prostego „R” jako polecenie na ekranie terminalu. Przegląd wątków programu i niektóre informacje o ich obecnym stanie są dostarczane przez wątki informacji o poleceniu, ponieważ należy zwrócić uwagę. Do tej pory rozpoczęła się tylko jeden wątek.

Wykonanie powinno kontynuować korzystanie z następującego polecenia:

W tym miejscu zaczynają się dwa jeszcze wątki. Wątek, który jest obecnie w centrum uwagi, jest oznaczony przez gwiazdę. Dodatkowo osiągnięto zestaw punktów przerwania dla nowo uformowanych wątków w ich metodach inicjalizacji - Wątek dwa () i wątek trzy (), w szczególności. Użyj polecenia, aby przenieść ostrość do innego wątku przed rozpoczęciem debugowania wątku. W wierszu 17 jego funkcji wątku druga, wątek 2 () zatrzymuje.

Zgodnie z wyjściem „wątków informacyjnych” wątek dwa krótko drukuje liczbę liczników 2, a następnie opuszcza wątek 2 w wierszu 17. Podobnie możemy obsługiwać wątek „Thread_three” przy użyciu dość podobnego sposobu, w jaki użyliśmy do Thread_WO.

Wniosek

Podsumowując, w końcu jesteśmy w stanie użyć debugera GDB w naszym Ubuntu 20.04 System Linux. W tym celu wyjaśniliśmy jego użycie w akapicie wprowadzającym i wymieniliśmy niektóre z głównych funkcji, które są nam dostarczone i sprawiają, że jest to unikalny debugger.