디버그 노드 응용 프로그램
let x = 5;
debugger;
console.log(x);
이제'inspect'키워드로 실행할 수 있습니다.node inspect test.js
디버거는 그림과 같이 첫 번째 줄 코드에서 멈출 것입니다.작은 화살표 > 현재 위치를 표시합니다. 주변에 있는 코드를 볼 수 있습니다. 길을 잃은 것을 발견하면list (10) 를 입력하고enter 키를 누르면 위치 주변의 10줄을 표시합니다. 코드를 더 잘 볼 수 있도록 줄 수를 늘릴 수 있습니다.여기에 다음을 입력할 수 있습니다.
이제 n을 입력하여 변수 "x"의 설명을 이동합니다.
변수 값 확인
"exec"를 입력하여 변수 값을 검사할 수 있습니다. 이 예에서, 변수 x의 값을 알고 싶으므로, exec x를 입력하고enter를 누르십시오.
exec를 사용하여 원하는 코드를 실행하고 인쇄할 수 있습니다.예를 들어, x+5의 결과를 알고 싶을 수도 있습니다. exec x+5에 입력한 다음enter 키를 누르면 결과를 볼 수 있습니다.
디버거에 입력한 모든 내용은 코드를 변경하지 않기 때문에 원하는 대로 할 수 있습니다.이런 상황에서 결과는 당연히 10이다.exec를 사용하여 변수, 함수, 내용에 대한 값을 호출하여 모든 종류의 복잡한 코드를 실행할 수 있습니다.오류를 식별하고 코드의 가능한 해결 방안을 테스트하기 위해 더욱 구체적인 예시를 살펴보자.
코드 검사를 사용하여 코드를 작성합니다.
"test2.js"라는 파일을 만들고 다음 코드를 배치합니다
let users = [
{
id: 1,
name: 'John'
},
{
id: 2,
name: 'Mary'
}
];
const findUser = (users, userName) => {
return users;
}
지금 이 "findUser"함수를 쓰고 싶다고 가정해 보세요. 하지만 어떻게 해야 할지 모르고 가장 좋은 방법이 무엇인지도 몰라요.
노드 inspect를 사용하여 findUser 함수를 빠르게 테스트하고 작성할 수 있습니다.
node inspect test2.js
findUser 함수를 호출하는 위치에 도달할 때까지 "n"을 누르십시오.
여기서 서로 다른 표현식을 신속하게 테스트하여 필요한 내용을 실현하는 가장 좋은 방법을 찾을 수 있습니다."filter"를 사용할 생각이 있으나, 어떻게 사용하는지 모르겠습니다. exec를 사용하면users 변수를 신속하게 처리하고 해결 방안을 얻을 수 있습니다. 구체적으로는 다음과 같습니다.
exec users.filter(user => user.name == 'John')[0]
물론 너도 실시간으로 결과를 검사할 수 있다.
파일에서만 코드를 작성하는 것에 비해 어떤 것을 작성하는 피드백 순환을 크게 줄이고 결과를 볼 수 있어 코드를 작성하는 데 걸리는 시간을 줄일 수 있다는 장점이 있다.뿐만 아니라 더욱 중요한 것은 당신이 정확한 응용 프로그램인'상태'를 가지고 있기 때문에 응용 프로그램의 그 순간의 상태를 기억할 필요가 없다. 당신은 문제를 해결할 수 있다고 생각하는 코드를 작성하고 결과를 직접 볼 수 있다.
REPL(읽기, 평가, 인쇄 주기)
REPL은 우리가 위에서 한 일을 완성하는 데 더 간단한 방법입니다. exec를 계속 작성할 필요가 없습니다. REPL을 입력하고enter를 누르면 REPL을 입력하고 CTRL+c를 누르면 종료할 수 있습니다. 아래의 그림은 우리가 이전에 한 것과 같지만exec를 실행하는 것이 아니라 REPL을 사용하십시오.
관찰자 사용
디버그 코드의 마지막 유용한 부분은 관찰 프로그램을 사용하는 것이다. 관찰 프로그램은 표현식 값을 검사하는 더 편리한 방법일 뿐이고 아래의 코드는 간단한 함수일 뿐이어서 사용자의 균형을 바꿀 수 있다.test3이라는 파일을 만듭니다.js 다음 코드를 배치합니다.
let users = [
{
id: 1,
name: 'John',
balance: 100
},
{
id: 2,
name: 'Mary',
balance: 200
}
];
const changeBalance = (userId, amount) => {
for(let user of users) {
if(user.id === userId) {
user.balance += amount;
break;
}
}
};
changeBalance(1, 100);
changeBalance(2, 100);
changeBalance(2, -100);
changeBalance(1, -200);
우리가 이 파일을 실행하기 전에 한 것처럼
node inspect test3.js
코드는 예상한 대로 첫 줄에 멈출 것입니다. 현재 우리는 관찰자를 만들어서 사용자의 균형을 관찰할 수 있습니다. 만약에 우리가 존의 균형이 시간에 따라 어떻게 변화하는지 관찰하고 싶다고 가정할 수 있습니다.
너는 모든 표현식을 "watch"함수에 전달할 수 있다. 우리는 존이 그룹의 첫 번째 사용자라는 것을 알고 있기 때문에 만약 우리가 그의 균형이 어떻게 시간에 따라 변화하는지 관찰하고 싶다면, 우리는 작성할 수 있다
watch('users[0].balance')
리턴 버튼을 누르면 이런 화면을 볼 수 있다
현재 모든 명령을 사용하여 디버거의 줄을 변경할 때마다 디버거 맨 위에 지금까지 만들어진 모든 관찰 프로그램의 결과 값을 포함하는 새로운 항목이 나타납니다.
위 그림에서 "0:"줄은 사용자가 만든 관찰자,'users[0].balance=100'을 볼 수 있습니다. 따라서 존의 잔액은 100달러로 시작됩니다.디버거가 이동할 때마다 표현식은 현재 값으로 다시 계산됩니다. 만약'메리'의 균형이 시간에 따라 어떻게 변하는지 관찰하고 싶다면, 당신이 존을 위해 한 것처럼 관찰자를 만들 수 있습니다.
watch('users[1].balance')
만약 이 표현식을 다시 보고 싶지 않다면, unwatch('users[0].balance')로 존의 예에서 표현식에 대한 연결을 취소할 수 있습니다.
Chrome 개발 도구를 사용하여 디버깅을 할 수도 있지만, 설정 속도가 느리고 진정한 장점이 없기 때문에 Chrome 개발 도구를 사용하는 것을 추천하지 않습니다. 더 많은 것을 알고 싶으면 더 많은 내용을 읽을 수 있습니다 here.
좋은 하루 되세요.😄
Reference
이 문제에 관하여(디버그 노드 응용 프로그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/____marcell/debugging-node-applications-4e07
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
"test2.js"라는 파일을 만들고 다음 코드를 배치합니다
let users = [
{
id: 1,
name: 'John'
},
{
id: 2,
name: 'Mary'
}
];
const findUser = (users, userName) => {
return users;
}
지금 이 "findUser"함수를 쓰고 싶다고 가정해 보세요. 하지만 어떻게 해야 할지 모르고 가장 좋은 방법이 무엇인지도 몰라요.노드 inspect를 사용하여 findUser 함수를 빠르게 테스트하고 작성할 수 있습니다.
node inspect test2.js
findUser 함수를 호출하는 위치에 도달할 때까지 "n"을 누르십시오.여기서 서로 다른 표현식을 신속하게 테스트하여 필요한 내용을 실현하는 가장 좋은 방법을 찾을 수 있습니다."filter"를 사용할 생각이 있으나, 어떻게 사용하는지 모르겠습니다. exec를 사용하면users 변수를 신속하게 처리하고 해결 방안을 얻을 수 있습니다. 구체적으로는 다음과 같습니다.
exec users.filter(user => user.name == 'John')[0]
물론 너도 실시간으로 결과를 검사할 수 있다.파일에서만 코드를 작성하는 것에 비해 어떤 것을 작성하는 피드백 순환을 크게 줄이고 결과를 볼 수 있어 코드를 작성하는 데 걸리는 시간을 줄일 수 있다는 장점이 있다.뿐만 아니라 더욱 중요한 것은 당신이 정확한 응용 프로그램인'상태'를 가지고 있기 때문에 응용 프로그램의 그 순간의 상태를 기억할 필요가 없다. 당신은 문제를 해결할 수 있다고 생각하는 코드를 작성하고 결과를 직접 볼 수 있다.
REPL(읽기, 평가, 인쇄 주기)
REPL은 우리가 위에서 한 일을 완성하는 데 더 간단한 방법입니다. exec를 계속 작성할 필요가 없습니다. REPL을 입력하고enter를 누르면 REPL을 입력하고 CTRL+c를 누르면 종료할 수 있습니다. 아래의 그림은 우리가 이전에 한 것과 같지만exec를 실행하는 것이 아니라 REPL을 사용하십시오.
관찰자 사용
디버그 코드의 마지막 유용한 부분은 관찰 프로그램을 사용하는 것이다. 관찰 프로그램은 표현식 값을 검사하는 더 편리한 방법일 뿐이고 아래의 코드는 간단한 함수일 뿐이어서 사용자의 균형을 바꿀 수 있다.test3이라는 파일을 만듭니다.js 다음 코드를 배치합니다.
let users = [
{
id: 1,
name: 'John',
balance: 100
},
{
id: 2,
name: 'Mary',
balance: 200
}
];
const changeBalance = (userId, amount) => {
for(let user of users) {
if(user.id === userId) {
user.balance += amount;
break;
}
}
};
changeBalance(1, 100);
changeBalance(2, 100);
changeBalance(2, -100);
changeBalance(1, -200);
우리가 이 파일을 실행하기 전에 한 것처럼
node inspect test3.js
코드는 예상한 대로 첫 줄에 멈출 것입니다. 현재 우리는 관찰자를 만들어서 사용자의 균형을 관찰할 수 있습니다. 만약에 우리가 존의 균형이 시간에 따라 어떻게 변화하는지 관찰하고 싶다고 가정할 수 있습니다.
너는 모든 표현식을 "watch"함수에 전달할 수 있다. 우리는 존이 그룹의 첫 번째 사용자라는 것을 알고 있기 때문에 만약 우리가 그의 균형이 어떻게 시간에 따라 변화하는지 관찰하고 싶다면, 우리는 작성할 수 있다
watch('users[0].balance')
리턴 버튼을 누르면 이런 화면을 볼 수 있다
현재 모든 명령을 사용하여 디버거의 줄을 변경할 때마다 디버거 맨 위에 지금까지 만들어진 모든 관찰 프로그램의 결과 값을 포함하는 새로운 항목이 나타납니다.
위 그림에서 "0:"줄은 사용자가 만든 관찰자,'users[0].balance=100'을 볼 수 있습니다. 따라서 존의 잔액은 100달러로 시작됩니다.디버거가 이동할 때마다 표현식은 현재 값으로 다시 계산됩니다. 만약'메리'의 균형이 시간에 따라 어떻게 변하는지 관찰하고 싶다면, 당신이 존을 위해 한 것처럼 관찰자를 만들 수 있습니다.
watch('users[1].balance')
만약 이 표현식을 다시 보고 싶지 않다면, unwatch('users[0].balance')로 존의 예에서 표현식에 대한 연결을 취소할 수 있습니다.
Chrome 개발 도구를 사용하여 디버깅을 할 수도 있지만, 설정 속도가 느리고 진정한 장점이 없기 때문에 Chrome 개발 도구를 사용하는 것을 추천하지 않습니다. 더 많은 것을 알고 싶으면 더 많은 내용을 읽을 수 있습니다 here.
좋은 하루 되세요.😄
Reference
이 문제에 관하여(디버그 노드 응용 프로그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/____marcell/debugging-node-applications-4e07
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
디버그 코드의 마지막 유용한 부분은 관찰 프로그램을 사용하는 것이다. 관찰 프로그램은 표현식 값을 검사하는 더 편리한 방법일 뿐이고 아래의 코드는 간단한 함수일 뿐이어서 사용자의 균형을 바꿀 수 있다.test3이라는 파일을 만듭니다.js 다음 코드를 배치합니다.
let users = [
{
id: 1,
name: 'John',
balance: 100
},
{
id: 2,
name: 'Mary',
balance: 200
}
];
const changeBalance = (userId, amount) => {
for(let user of users) {
if(user.id === userId) {
user.balance += amount;
break;
}
}
};
changeBalance(1, 100);
changeBalance(2, 100);
changeBalance(2, -100);
changeBalance(1, -200);
우리가 이 파일을 실행하기 전에 한 것처럼node inspect test3.js
코드는 예상한 대로 첫 줄에 멈출 것입니다. 현재 우리는 관찰자를 만들어서 사용자의 균형을 관찰할 수 있습니다. 만약에 우리가 존의 균형이 시간에 따라 어떻게 변화하는지 관찰하고 싶다고 가정할 수 있습니다.너는 모든 표현식을 "watch"함수에 전달할 수 있다. 우리는 존이 그룹의 첫 번째 사용자라는 것을 알고 있기 때문에 만약 우리가 그의 균형이 어떻게 시간에 따라 변화하는지 관찰하고 싶다면, 우리는 작성할 수 있다
watch('users[0].balance')
리턴 버튼을 누르면 이런 화면을 볼 수 있다현재 모든 명령을 사용하여 디버거의 줄을 변경할 때마다 디버거 맨 위에 지금까지 만들어진 모든 관찰 프로그램의 결과 값을 포함하는 새로운 항목이 나타납니다.
위 그림에서 "0:"줄은 사용자가 만든 관찰자,'users[0].balance=100'을 볼 수 있습니다. 따라서 존의 잔액은 100달러로 시작됩니다.디버거가 이동할 때마다 표현식은 현재 값으로 다시 계산됩니다. 만약'메리'의 균형이 시간에 따라 어떻게 변하는지 관찰하고 싶다면, 당신이 존을 위해 한 것처럼 관찰자를 만들 수 있습니다.
watch('users[1].balance')
만약 이 표현식을 다시 보고 싶지 않다면, unwatch('users[0].balance')로 존의 예에서 표현식에 대한 연결을 취소할 수 있습니다.Chrome 개발 도구를 사용하여 디버깅을 할 수도 있지만, 설정 속도가 느리고 진정한 장점이 없기 때문에 Chrome 개발 도구를 사용하는 것을 추천하지 않습니다. 더 많은 것을 알고 싶으면 더 많은 내용을 읽을 수 있습니다 here.
좋은 하루 되세요.😄
Reference
이 문제에 관하여(디버그 노드 응용 프로그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/____marcell/debugging-node-applications-4e07텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)