2009-10-30 28 views
7

Próbuję użyć ramy testowania jednostkowego check dla mojej aplikacji C. Ale nie mogę używać debuggera (gdb) z nim ze względu na dwa punkty:Test jednostki debugowania w języku C przy użyciu funkcji sprawdzania

  • najpierw sprawdzić korzystać z niektórych złożonych makr (START_TEST i END_TEST) i debugger ma problemy aby umieścić punkt przerwania w moim kodu pomiędzy te dwa makra (w rzeczywistości mogę ustawić punkt przerwania oprogramowania, ale nigdy nie jest widoczny przez gdb). Dlatego próbując umieścić punkt przerwania sprzętowego, test zakończył się niepowodzeniem i zakończył działanie, ponieważ sprawdzenie punktu przerwania sprzętowego jest wynikiem niepowodzenia mojego testu.

Czy ktoś już napotkał ten problem i ma rozwiązanie?

Odpowiedz

11

Spójrz na no-fork mode:

Sprawdź normalnie widelce utworzyć oddzielną przestrzeń adresową. Pozwala to na uchwycenie i zgłoszenie sygnału lub wczesnego wyjścia, a nie usunięcie całego programu testowego i zwykle jest bardzo użyteczne. Jednak podczas próby debugowania, dlaczego wystąpił błąd segmentacji lub innego błędu programu, rozwidlenie utrudnia korzystanie z narzędzi do debugowania.

0

Wypróbuj TAP (Protokół testowy) ... jest o wiele łatwiejszy w implementacji, wysyłce i debugowaniu. Bardzo łatwo jest go ustawić na valgrind - i ma tendencję do przyjemniejszego grania z gdb.

+0

Od 2016-09-23 łącze TAP do [http://ccan.ozlabs.org/info/tap.html](http://ccan.ozlabs.org/info/tap.html) to 404. Główna strona WWW, ozlabs.org, nadal działa, ale nie mogę zlokalizować informacji TAP. Wikipedia ma wpis dotyczący [Protokołu testowego] (https://en.wikipedia.org/wiki/Test_Anything_Protocol); istnieje strona internetowa dla [Protokołu z Testami] (https://testanything.org/) z implementacjami w językach C, C++, Java, JavaScript, Python, Perl itp. –

5

W rzeczywistości MOŻESZ również używać trybu rozwidlenia.

gdb ma dwie ciekawe opcje związane z widelcem zachowań:
- detach-on-fork (ustawiony na false)
- follow-on-fork (jednego z rodziców lub dziecka; zawsze biorę dziecko)

To sprawi gdb podążać za dzieckiem proces. Po zakończeniu procesu potomnego należy ręcznie przełączyć się z powrotem do procesu nadrzędnego, używając polecenia inferior.

Powiązane problemy