|
이영우 님이 쓰신 글 :
: 디버그는 프로그램을 만드실때 가장 중요한 요소입니다.
: 디버그는 컴파일이 된 경우에만 가능하구요.
: 초기에는 프로그램 파악이 어렵지만, 숙달하시면
: 수백,몇천라인도 눈으로 디버그가 됩니다. 물론 어려운 프로그램은 짧아도
: 디버깅을 거쳐야 로직이 판명되기도 합니다.
:
: 디버그 방법은..
: 일단 tc(터보씨)에서 아래 프로그램을 작성하시고,
: f9를 눌러보시면 컴파일이 되지요.
: control+f9를 누르시면 링크까지 끝나고 실행파일이 실행되며,
: 입력을 받으려고 할겁니다.
: 쉬운 디버그는 f7키만을 누르시면 가능합니다.
: f7(step over, 한줄씩 디버그)를 한번씩 누르시면, (조금 틀릴수도 있답니다)
: 누르실때마다..
:
: 1. main위치에 시작, 변수선언부분도 지나감.
: 2. scanf 이동
: 3. 입력받으려고 커서 대기
: 4. while()..
: 5. sum += ...
: 6. num = ....
: 7. while()...
: 8. sum+= ...
: 9. num = ..
: 이렇게 계속 나아갑니다.
: 결국 while()..,sum+=..,num=... 이 세라인이 계속 무한루프가 발생합니다.
:
: 각 변수의 그 상황의 값은 insert키로 넣으시면 tc의 아래창에
: 변동된 값이 계속 나옵니다.
: ins키 누르시고, keyvalue와 num을 넣어서 각 라인마다 변동되는 값을 찾아보세요.
:
: 왜 루프가 발생하는가?
: 결국 while문이 항상 true 값을 가지므로 무한루프가 발생하지요.
: 결국 조건안의 KeyValue값이 항상 0이 아니고, num이 5보다 항상 작으므로,
: 무한루프가 됩니다.
: 그럼 keyvalue는 초기입력값이므로, 그렇다고 치고..
: num은 왜 항상 5보다 작죠?
: 여기까지입니다. 직접 찾아보세요.
:
이영우님, 답변 정말 감사합니다.
상세한 설명 제게 도움이 되었습니다.
더욱 공부에 매진해야겠어요.
오늘 실행해 보니 되더군요.
무한루프는 없어지고 원래의 값이 나오더군요.
감사합니다. ^^
|