2012-02-02 14 views
16

Chciałbym wiedzieć, czy jest to możliwe, podczas sesji debugowania w systemie Linux (czytaj: gdb :)), aby zatrzymać wykonywanie pojedynczego wątku, pozostawiając pozostałe wątki do uruchomienia.Czy można zatrzymać pojedynczy wątek podczas debugowania w systemie Linux?

Jeśli ktoś jest ciekawy dlaczego warto czytać: Napisałem programowy watchdog C++ (używając Qt). Przetestowałem go za pomocą prostego programu wielowątkowego, ale chciałbym przetestować kod po zintegrowaniu go również z rzeczywistą aplikacją. Jeśli mógłbym zatrzymać wątek z debuggera, to uprości to fazę testowania. :)

Cheers Sergio

+7

** Przeprosiny ** dokładniejsze wyszukiwanie w google pozwoliło mi znaleźć ten link: (http://sourceware.org/gdb/onlinedocs/gdb/Non_002dStop-Mode.html#Non_002dStop-Mode), który wydaje się odpowiadać pytanie. Pozdrawiam: – sergico

+5

można umieścić odpowiedź na swoje pytanie. proszę zrób. –

+0

możliwy duplikat [nie zatrzymuje wszystkich wątków w gdb] (http://stackoverflow.com/questions/3666331/not-stopping-all-threads-in-gdb) –

Odpowiedz

3

Użyj tej sekwencji poleceń przed uruchomieniem lub dołączyć do programu:

  • włączyć interfejs transmisji asynchronicznej:
    Set Target-asynchronicznie 1

  • W przypadku korzystania z interfejsu CLI, stronicowanie łamie non-stop:
    ustawianie stronicowania wyłączone

  • go włączyć:
    ustawiony non-stop na

pomocą tych poleceń do manipulowania ustawienia trybu non-stop:

  • umożliwić wybór trybie non-stop:
    zestaw non-stop na

  • Wyłączenie trybu nieprzerwanego:
    zestaw non-stop off

  • Pokaż aktualny non stop włączone ustawienie:
    pokazać non-stop

Referencje:
http://sourceware.org/gdb/onlinedocs/gdb/Non_002dStop-Mode.html#Non_002dStop-Mode

0

Jeśli ta niewielka zmiana jest w porządku, możesz wysłać wątekowi sygnał STOP (nie jako polecenie gdb gdb - to odmiany) i debugować wszystko inne. Signal CONT pozwala kontynuować wątek.

Powiązane problemy