2017-12-01 2 views
2

나는 완료시에 setTimeout()으로 다시 대기하는 함수를 가지고있다. 누군가가 Chrome DevTools가 재귀 적으로 호출하는 것처럼 보이는 이유를 설명 할 수 있습니까? 필자가 알기로는 호출 할 때마다 호출 스택이 명확해야합니다.setTimeout()이 Chrome DevTools에서 호출 스택을 왜곡시키는 이유는 무엇입니까?

Three main's on stack :이 3 참조 더 반복 한 후

One main on stack

: 중단 점 적중

<html> 
    <head> 
    <script> 
     function main() { 
     setTimeout(main, 100); // set breakpoint here 
     } 
     main(); 
    </script> 
    </head> 
    <body></body> 
</html> 

처음 나는이를 참조하십시오

이 매우 간단한 예제를 타고

파이어 폭스 개발자 도구는 내가 원하는 것을 수행하고 중단 점에 도달 할 때마다 스택에 함수의 인스턴스 하나만 보여줍니다.

enter image description here

내가 잘 모르는 것 같아요, 또는이 단지 DevTools로 UI 것입니다 크롬에서 진행 미묘한 참조 캡처 어떤 종류가 있습니까?

+1

그냥 devtools UI입니다. 콜 스택은 단지 1 깊이이지만 현재 호출이 대기중인 곳을 보여줍니다. 함수가 실행되는 이유와 그것이 호출 된 컨텍스트를 추적하는 데 유용한 매우 유용합니다 –

+0

Thanks @FredStark. 유틸리티를 볼 수는 있지만 프로그램이 실행될 때 호출 스택 목록이 무한대로 커지지 않도록하는 방법이 있습니까? (비동기식 스택 트레이스를 끄지 않고) – rkagerer

답변

3

그것을 숨기려면 -
DevTools로 설정으로 이동 -> 환경 설정 -> 디버거
확인 "사용 안함 비동기 스택 추적"
하지만 강하게 그대로두고하는 것이 좋습니다. 디버깅에 매우 유용합니다.

+1

고마워. 나는 당신이 그것에 대답했을 때쯤에 나 자신을 알아 냈다! 필요한 6 분 후에 답을 수락합니다. – rkagerer

관련 문제