2013-09-30 16 views
8

Jestem obecnie (próbuje) stworzyć aplikację z Worklight Studio 5.0.6 i Dojo (Mobile) 1.8.3. Naprawdę ciężko jest znaleźć właściwą metodę debugowania. Po odczekaniu 5-10 minut na zbudowanie wdrożyć-proces na serwerze, błąd zwykle wygląda to w debugera Chrome:Jak debugować Dojo w przeglądarce?

enter image description here

Jak mam wyśledzić ten błąd w moje źródło? Cały ślad stosu składa się w całości z kodu , który generuje absolutnie bezużyteczny komunikat o błędzie po 20 warstwach abstrakcji.

Poważnie, jak sobie z tym radzicie w prawdziwym życiu? Jakie metody używasz do debugowania aplikacji opartych na Dojo w przeglądarce?

Spyro

+1

Czy podałeś 'isDebug: true' w swoim' dojoConfig'? Spróbuj też sprawdzić, czy to samo dzieje się w innych przeglądarkach. Nie mam pojęcia dlaczego, ale czasami inne przeglądarki dostarczają mi więcej informacji. – g00glen00b

Odpowiedz

2

Dla błędów dojo.parse, uważam, że warto wstrzymać debugera Chrome na wszystkich wyjątków (fioletową ikonę na zrzucie ekranu, powinien być niebieski). Zwykle uzyskujesz więcej szczegółów na temat przyczyny błędu, nazwy analizowanego węzła DOM itp. W pierwszym zgłaszanym wyjątku.

Remi.

2

Debugowanie aplikacji opartej na dojo powinno być takie samo jak debugowanie dowolnej aplikacji javascript.

Zazwyczaj będę wykonaj następujące kroki:

  1. dodawania console.log() gdzieś w kodzie: jest szybki, a większość czasu to wystarczy.

  2. zestaw przerwania debugger: krok 1, jeśli to nie wystarczy, można opierać na informacji o błędzie, aby ustawić punkt przerwania przed linią błędu, a następnie wkroczyć lub wyjść.

  3. komentarz się ostatnio zmienia: jakiegoś błędu, który jest trudno znaleźć linię błędu, na przykład analizować błąd w przypadku, dobrym sposobem jest wykomentuj swój ostatnio zmienia, jeden po drugim, aż z powrotem do Twoja ostatnia działająca wersja. Lub wróć do ostatniej działającej wersji, a następnie dodaj kod jeden po drugim.

  4. Tworzenie prostych aplikacji do odtworzenia błędu: jeśli aplikacja jest bardzo skomplikowane i trudno jest, aby przestrzegać powyższych metod, można spróbować stworzyć nową aplikację, która naśladuje swoją bieżącą aplikację, ale z prostych logiki i spróbuj odtworzyć błąd.

  5. podstawie doświadczeń: niektóre błędy, na przykład dodatkową „” w końcu tablicy, która działa w Chrome i Firefox, zgłosi informacje o błędzie w IE nonsens. Debugowanie tego rodzaju błędów jest bardzo trudne, możesz polegać na swoim doświadczeniu lub wyszukiwaniu google.

+1

Dziękuję za odpowiedź, ale to wszystko nie jest specyficzne dla Dojo z szerokim wykorzystaniem wywołań zwrotnych i asynchronicznego kodu AMD, gdzie po prostu nie wiesz, co właściwie spowodowało błąd (ponieważ twoja "klasa" nie jest częścią stosu ślad). Nie można nawet manipulować twoją stroną z konsoli javascript ze względu na brakujące wymagania. – spyro

1

Zazwyczaj to, co robię w takich sytuacjach jest umieszczenie punktu przerwania wewnątrz zwrotnego błędu (linia 3398 w Twoim przypadku), a następnie zajrzeć do zmiennej o błędzie („E”).

Nie jestem pewien, czy jesteś zaznajomiony z Web Inspector, ale gdy już uderzysz w punkt przerwania, otwórz konsolę Web Inspector i sprawdź właściwości błędu "e.message" i "e.stack "(wystarczy wpisać w konsoli" e.message ").) Również w trakcie rozwoju lepiej jest unikać optymalizacji/minimalizacji Dojo, co znacznie poprawia zdolność do debugowania:

Najważniejsze jest, aby spróbować umieścić .? punkt przerwania zanim zostanie zgłoszony błąd

2

czy podasz isDebug: true w dojoConfig spróbuj też sprawdzić, czy to samo dzieje się w innych przeglądarkach

Aktualizacja:. niedawno odkryto, że istnieją problemy z Google Debugowanie Chrome i Dojo i myślę, że ma to związek z asynchronicznym ładowaniem plików. Jak widać w pod warunkiem, że zrzut ekranu @spyro, obiekt ReferenceError jest pusty (co można zauważyć z powodu pustych nawiasów {}). Jeśli chcesz rozwiązać ten problem, otwórz ponownie konsolę Google Chrome (na przykład dwukrotnie naciskając F12). Po ponownym otwarciu ReferenceError nie powinno już być puste, a teraz możesz rozwinąć ten obiekt, używając strzałki obok niego i uzyskać bardziej szczegółowy komunikat o niepowodzeniu.