잘못에 우롱당하지 마라
컴파일할 때입니까 아니면 실행할 때입니까?
내가 디버깅을 깊이 있게 하기 전에, 당신이 만날 수 있는 두 가지 유형의 오류를 토론하는 것이 매우 중요하다.디버깅의 목표는 오류의 출처를 찾는 것이기 때문에 개발 과정에서 두 가지 다른 점이 오류를 일으킬 수 있다는 것을 기억하십시오.
컴파일 시간
컴파일할 때 오류가 미리 포착됩니다.일반적으로 구문 오류나 파일에서 오류를 찾을 수 없습니다. 강한 형식의 언어라면 형식이 일치하지 않는 오류일 수 있습니다.
error There was a problem parsing "/Users/laurie/Personal/practice/src/pages/index.js"; any GraphQL fragments or queries in this file were not processed.
This may indicate a syntax error in the code, or it may be a file type that Gatsby does not know how to parse.
ERROR Failed to compile with 1 errors 12:39:25 PM
error in ./src/pages/index.js
Syntax Error: SyntaxError: /Users/laurie/Personal/practice/src/pages/index.js: Unterminated regular expression (14:30)
12 | {node.title}
13 | <ul>
> 14 | <li>{node.year</li>
| ^
15 | <li>
16 | {"Characters"}
17 | <ul>
이것은 괄호를 삭제함으로써 촉발된 문법 오류의 예이다프로젝트를 구축하려고 시도할 때, 컴파일을 볼 때 오류가 발생할 때까지 기다릴 수 있습니다.그러나 코드를 작성할 때 구문 강조 표시가 있는 IDE나 다른 텍스트 편집기를 사용하면 일반적으로 컴파일 오류가 발생합니다.IDE에서 작성하고 있는 언어에 집중할 플러그인을 찾으려면 linter를 실행해 보십시오.이 모든 것은 관련 오류를 일으키기 전에 문제를 발견하는 데 도움을 줄 수 있습니다.
런타임
실행 중 오류는 코드가 실제 실행 중 발생한 문제와 관련된 오류입니다.이것은 우리가 통상적으로 프로그래머라고 생각하는 오류 유형이다.
Objects are not valid as a React child (found: object with keys {allMarvelYaml}). If you meant to render a collection of children, use an array instead.
in div (at pages/index.js:8)
in main (created by Context.Consumer)
in div (created by Context.Consumer)
in StaticQuery (created by Layout)
in Layout (at pages/index.js:7)
이것은 내가 React에서 촉발한 오류의 예이다이 글의 대부분 내용은 운행 시 오류의 근원을 찾아내는 데 집중될 것이다.
오류 메시지 및 스택 추적
실행 중 오류가 발생하는 첫 번째 단서는 보통 메시지와 보기 싫은 창고 추적의 조합입니다.이 글은 브라우저 콘솔, 터미널, IDE, 로그에 넣을 수 있습니다. 여러 가지 옵션이 있습니다!첫 번째 도전은 그것을 찾는 것이다.
알림: 실행 코드 명령을 실행하는 원본 코드 찾기
일단 이렇게 하면 오류 메시지의 내용과 창고 추적이 자원이다.때때로 이 기계들의 응답 중 가장 유용한 부분은 숨겨져 있다는 것을 기억하세요.과거의 인성화된 정보를 읽고 몇 줄을 내려다보면 무슨 소용이 있습니까?
식별할 수 있는 모든 것을 찾거나 코드에 비추는 것을 돕고 있다.변수 이름이나 줄 번호를 포함하는 것이 유용합니다.만약 네가 이런 것을 볼 수 없고, 또한 네가 천성적으로 잘못된 소식이 무슨 말을 하는지 이해하지 못한다면, 그것은 상관없다.
Objects are not valid as a React child (found: object with keys {allMarvelYaml}). If you meant to render a collection of children, use an array instead.
in div (at pages/index.js:8)
in main (created by Context.Consumer)
in div (created by Context.Consumer)
in StaticQuery (created by Layout)
in Layout (at pages/index.js:7)
내 위에 포함된 이 잘못된 소식 기억나?우리의 오류가 색인에서 왔다는 것을 보여 줍니다.js 파일과 여덟 번째 줄은 매우 유용하다.이 예에서, 이것은 내가 대상을 사용할 수 없고, 문자열이나 다른 기본체를 사용해야 한다고 지적한다.기억해야 할 또 다른 것은 오류 메시지가 코드의 결과일 수도 있다는 것이다.창고 추적에서 언급한 세부 사항은 사실상 근본적인 원인을 가리키지 않을 수도 있다.이것이 바로 촉발 오류가 이렇게 복잡하게 복구되는 원인이다!
이 오류는 바로 우리에게 원본 코드를 보여 주었다!불행하게도, 원본 코드는 우리가 작성한 것이 아니라,
구글 기계를 깰 때가 됐어요.
불행하게도, 오류 메시지가 종종 모호하거나, 창고 추적이 너무 깊어서, 우리는 코드와 관련된 어떤 부분을 확정할 수 없다.이것은 네가 이전에 의지했던 프로그래머의 세계다.
구글의 오류는 대략 프로그래머가 생계를 꾸리는 75퍼센트에 달한다.나는 농담하는 것을 좋아하지만, 늘 이런 느낌이 든다.구글을 잘 사용하는 것은 합법적인 기술로 당신의 생산력에 큰 영향을 미친다.구글로 특정 오류의 복구를 검색할 때 기억해야 할 것이 몇 가지 있다.
누군가가 잘못을 저질렀고, 그들이 어떻게 해결했는지를 발견하더라도, 이것은 항상 알고 있는 문제가 아니라, 그것을 이해할 수 없을 수도 있다는 것을 명심하세요.새 프로그래머 (심지어 이 기술의 초보 프로그래머) 는 이 응답 라인의 답안을 이해하기 어려울 수도 있다.문제의 배경에 대해 더 투철한 이해가 없다면 기술에 특정한 어휘표를 사용하기 어렵다.시간이 지날수록 해결책을 찾을 수 있는 다른 방법이 있다는 것을 명심해라.
사실 당신이 얼마나 멀리 갔는지 보고 싶다면 한 달 전까지 알지 못했던 구글 자원으로 돌아갈 수 있다.나는 네가 지금 할 수 있을 것이라고 내기한다.
반환 코드
위의 디버깅 절차는 규정적인 것이 아니다.때로는 특히 공부할 때 여기서부터 코드를 사용하는 것이 도움이 된다.상술한 절차를 마쳤든지 말든지 코드를 보는 것은 오류가 발생하는 원인을 밝히는 가장 좋은 방법이다.
최근에 추가된 코드 줄을 보기 시작합니다.마지막 2-3행 코드를 추가하기 전에 작업 중인 프로젝트가 있다는 것을 알면 잠재적인 원흉을 쉽게 찾을 수 있습니다.
만약 불행하게도 테스트되지 않은 코드를 대량으로 작성했다면, 변경 사항을 숨기거나 역작업을 시도하십시오.목표는 문제를 일으키는 코드 세션을 찾아서 복구하는 것입니다.주석은 오류 코드를 분리하는 또 다른 방법입니다. 나중에 추가할 진도를 삭제하지 않습니다.
디버거는 당신의 친구입니다...단점도 마찬가지다
코드가 실행될 때 한 걸음씩 실행해 보십시오.변수가 원하는 값에 할당됩니까?당신은 예상한 순서에 따라 조작을 진행했습니까?
이 정도는 할 수 있는 방법이 다르다.자바스크립트를 실행하고 있다면, 관리자를 사용하고 코드가 브라우저에서 실행될 때 인터럽트를 설정할 수 있습니다.IDE에서 코드를 직접 실행하는 경우 IDE 자체에서 중단점을 설정할 수 있습니다.
항목에 따라 변수의 결과를 인쇄하는 것이 더 쉽거나 코드의 어느 점에 인쇄할 수 있습니다.
getResults(searchString: string): void {
this.githubSearchService.getUsers(searchString) // pull results
.subscribe(result => {
this.result = result;
console.log("I AM HERE!")
if (this.result) {
this.items = this.result.items;
}
});
}
컨트롤러 로그 기록이나 인쇄 문장은 코드를 디버깅하는 매우 효과적인 방법이다.렉 걸렸어요?
기억해라, 너는 언제든지 도움을 구할 수 있다.질문을 할 때 가능한 한 많은 정보를 제공하는 것이 중요하다.사용 중인 기술, 버전 번호, 오류, 스택 추적 등입니다. 코드를 JSFIDLE와 같은 공공 접근 가능한 환경에서 실행할 수 있도록 설정할 수 있다면 더욱 좋습니다!
디버깅은 오류를 해결하는 데 시간이 많이 걸릴 뿐만 아니라 사람을 낙담하게 할 수도 있는 기술이다.그러나 당신이 이 점을 알게 되면, 이것도 업무에서 가장 만족스러운 부분 중의 하나입니다!
Reference
이 문제에 관하여(잘못에 우롱당하지 마라), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/laurieontech/don-t-get-fooled-by-errors-314c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)