Debugowanie to bardzo przydatne narzędzie do sprawdzania stanu obiektów i zmiennych w kodzie w czasie wykonywania.
Jak wcześniej wspomniano w odpowiedziach powyżej, debugowanie jest niezwykle pomocne, ale w niektórych przypadkach jest ograniczone.
Z mojego doświadczenia wynika, że korzystanie z debuggera jest bardzo przydatne, ponieważ pomaga ujawnić fałszywe założenia dotyczące stanu mojego kodu. Niektóre osoby nie są tak bystre w czytaniu kodu w celu znalezienia błędu, więc debugowanie może pomóc w ujawnieniu fałszywych założeń, które ty lub inny programista poczyniłeś na temat stanu kodu.
Być może spodziewasz się, że parametr nigdy nie będzie zerowy po przekazaniu do metody, więc nigdy nie sprawdzasz tego przypadku i nie kontynuujesz metody, jakby ten parametr nigdy nie był zerowy. Rzeczywistość jest taka, że parametr będzie w końcu jest zerowa w pewnym momencie nawet jeśli ustawiony jako warunek wstępny do metody, że parametr nie powinien być NULL. To się zawsze stanie.
W przeciwieństwie do użyteczności debuggerów w wyżej wymienionych przykładach, trudno jest mi je stosować, gdy w grę wchodzi wielowątkowość (tj. Współbieżność, przetwarzanie asynchroniczne). Może to pomóc, ale łatwo jest stracić orientację w wielowątkowej mgle, gdy punkty przerwania debuggera są trafiane w jednym wątku w punkcie A i całkowicie oddzielnym wątku w punkcie B. Deweloper jest zmuszony przesunąć nowy punkt przerwania ” proces myślowy „na szczycie” stosu jego mózgu i zorientuj się w kodzie w punkcie nowego punktu przerwania. Po tym, jak trafność punktu przerwania B maleje, programista przełącza się z powrotem do pierwszego punktu przerwania i musi przypomnieć sobie to, czego szukał przed uruchomieniem punktu przerwania B. Wiem, że może to być mylące wyjaśnienie,
Również nieprzewidywalność współbieżnego kodu może dodatkowo rozpraszać programistę podczas debugowania współbieżnego kodu.
Podsumowując, moim szczerym zdaniem:
- Debugowanie, gdy używana jest współbieżność = zwiększona tendencja do utraty koncentracji na „wzorcu myślenia debugowania”
i
- kiedykolwiek indziej = zwiększona wydajność debugowania b / c twoja uwaga nie jest przerywana przez nieoczekiwane punkty przerwania (nieoczekiwane z powodu warunków wyścigu).