최신 브라우저에서 수행 한 코드 최적화의 결과로 디버깅하는 동안 "실제로"범위에있는 모든 변수를 "볼 수"없습니다. 이것은 잘 알려져 있으며 이전 질문에서 해결되었습니다 . 이 기능은 프로덕션 환경에서 가장 유용하지만 개발 과정에서 많은 어려움을 겪고 있지만 속도가 느려집니다.
이제 내 질문은,이 동작을 해제 할 수있는 방법이 있습니까? 일부 구성 파일을 편집 할 수 있습니까, 아니면 브라우저 플러그인이 있습니까, 아니면 브라우저 실행 파일의 "개발자를위한 특수 빌드 버전"이 있습니까? 새 코드를 작성할 때 콘솔에 코드를 바로 입력하는 것을 좋아하므로 실제로 버그가 있습니다.
업데이트 / 편집
다음은 Paul1365972의 일부 솔루션입니다.
다음과 같은 특수 옵션을 사용하여 명령 행에서 크롬 브라우저를 시작해야합니다.
- 크롬을 완전히 닫습니다
"C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" --js-flags="--allow-natives-syntax"
다른 OS와 유사한 Windows 용 콘솔에서 Chrome을 실행하십시오 .- 개발자 콘솔을 열고를 실행하십시오
"%GetHeapUsage()"
. 옵션으로 Chrome을 올바르게 시작하면 콘솔에 숫자가 기록됩니다. 그렇지 않으면 구문 오류가 발생합니다.
이 명령 행 플래그를 사용하면 %
일반 JavaScript의 구문 오류 인로 시작하는 명령으로 V8 엔진과 대화 할 수 있습니다 . 이런 종류의 사용 가능한 V8 명령 목록 은 Paul의 답변에 나와 있습니다.
이 %NeverOptimizeFunction()
난 그냥 전화와 함께 할 수있는하려는 것처럼 보였다 뭔가 그 목록에. 불행히도 다음 스크린 샷에서 볼 수 있듯이 해당 기능은 내가 원하는 것을 수행하지 않습니다.
((( Paul의 답변 (v8-natives 노드 모듈) 의 다른 링크 는이 문맥에서 우리에게 중요하지 않습니다. 코드가 충돌하지 않도록 "%"함수 호출 주위에 한 줄짜리 줄 바꿈) v8이 아닌 브라우저))))
(((이 기능이 작동 한 시점을 기억합니다 (최적화가 아직 발명 / 구현되지 않은 시점). 나는 얼마나 오래 전인지 모르겠습니다. 10 년? 15 년? 그런 것. 마지막 Chrome 버전은 무엇입니까? any) 그리고 당신이 할 수있는 마지막 파이어 폭스 버전 (여기서 더 확실합니다)은 무엇입니까? 그것은 당신에게 현상금을 얻지 못하지만 당신이 그것을 알고 답으로 게시하면 공감대를 얻습니다. .)))
해결책
감사합니다 SRNICEK
새로운 질문
Petr의 솔루션은 많은 도움이되지만 완벽하지는 않습니다. 이 질문은 너무 오래 걸리므로 Petr의 솔루션을 개선하는 방법 에 대한 새로운 질문 을 게시했습니다 . (물론 여기서이 질문을 편집 할 수는 있지만, 내가 무슨 뜻인지 알면 "역사적"이라고 느낄 것입니다.)
v8-natives
라이브러리는해야하는 간단한 라이브러리의 코드에서 중요한 %의 호출을 래핑 noops
... 특별한 --allow-원주민 구문 플래그에서 시작되지 않은 브라우저 또는 노드를
%NeverOptimizeFunction(foo)
bodyOnload에 대해서도 "전화하기 때문에" "그냥 상처를 입지 않는다"는 것입니다. 문제는 foo
내가 기대했던 방식으로 최적화되지 않은 것입니다. 변수 lorem
가 보이지 않습니다. 함수 foo에 들어가는 코드를 작성하고 싶다고 가정 해 봅시다. 텍스트 편집기에 입력하는 대신 디버거가 foo에 앉아있는 동안 dev 콘솔에 입력하고 원하는지 확인한 다음 콘솔에서 텍스트 편집기로 복사 / 붙여 넣기하십시오. 그것이 내가 일하는 것을 좋아하는 방법입니다. 그리고 할 수 없습니다. 최적화 때문입니다. 알 겠어요?
--js-flags
가지 ( TurboFan 관련 명령 포함) 여러 가지 V8 기본 명령을 실험하면서 여러 가지 실험을 보냈지 만 원하는 동작을 수행 할 수 없었습니다. 나는이 접근법이 막 다른 골목이라고 생각합니다. [v8]
이 질문에 태그를 추가하는 것이 좋습니다 . V8의 내부 작업에 대해 깊이 이해하고있는 사람이라면 이것이 올바른 방향을 향하고 있는지, 아니면 당신을 가리킬 수 있는지를 분명히 할 수있을 것입니다.