Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[1357] Re:디버깅...
이영우 [userof] 1485 읽음    2002-10-16 11:26
디버그는 프로그램을 만드실때 가장 중요한 요소입니다.
디버그는 컴파일이 된 경우에만 가능하구요.
초기에는 프로그램 파악이 어렵지만, 숙달하시면
수백,몇천라인도 눈으로 디버그가 됩니다. 물론 어려운 프로그램은 짧아도
디버깅을 거쳐야 로직이 판명되기도 합니다.

디버그 방법은..
일단 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보다 작죠?
여기까지입니다. 직접 찾아보세요.

홍길한 님이 쓰신 글 :
: #include<stdio.h>
:
:  void main() {
:     int KeyValue;
:     int num = 0, sum = 0;
:
:     scanf("%d", &KeyValue);
:     while ((KeyValue !=0) && (num < 5 ) ) {
:         sum += KeyValue;
:         num = KeyValue % 5;
:     }
:     printf("당신이 입력한 숫자의 총 합은 %d 입니다. \n", sum);
:  }
: 제가 현재 보고 있는 책의 예제인데요.
: 영진.COM의 C언어 30일완성이라는 책입니다.
: 연습문제로 나온 예제인데요.
: 사용자로부터 숫자 값을 입력 받아서 그 입력된 숫자의 합을 구하는 프로그램입니다.
: 근데 실행하면 원하는 결과는 나오지 않고
: 계속 무한 루프로 실행이 되기 때문에 디버깅 기능을 이용하여 이 문제를 해결하라는 내용이었습니다.
: 근데 제가 디버깅에 대해 잘 개념이 안 잡혀서 어떻게 해야 하는지 물어 볼께요.
: 좋은 주말들이 되시구요.
: 감사합니다. ^^

+ -

관련 글 리스트
1341 디버깅... 홍길한 1317 2002/10/13
1357     Re:디버깅... 이영우 1485 2002/10/16
1368         Re:Re:감사합니다. ^^ 홍길한 1344 2002/10/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.