Problem z wykrywaniem przepełnienia stosu polega na tym, że ślad stosu się odpręża i nie można zobaczyć, co się właściwie dzieje.
Uznałem, że niektóre z nowszych narzędzi do debugowania w Chrome są przydatne do tego.
Naciśnij Performance tab
, upewnij się, że Javascript samples
są włączone, a dostaniesz coś takiego.
To oczywiste, gdzie jest przepełnienie! Jeśli klikniesz extendObject
, będziesz w stanie zobaczyć dokładny numer wiersza w kodzie.
Możesz także zobaczyć czasy, które mogą być pomocne lub nie, lub czerwony śledź.
Kolejną przydatną sztuczką, jeśli nie możesz znaleźć problemu, jest umieszczenie wielu console.log
stwierdzeń tam, gdzie Twoim zdaniem jest problem. Poprzedni krok powyżej może ci w tym pomóc.
W Chrome, jeśli wielokrotnie wyprowadzasz identyczne dane, wyświetli się w ten sposób, pokazując, gdzie problem jest wyraźniejszy. W tym przypadku stos uderzył w 7152 klatek, zanim ostatecznie się zawiesił:
data
w ajax. Naprawiono błąd, deklarując zmienne.