ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (C/C++) 20강 몹시매우 중요한 ~~
    카테고리 없음 2020. 1. 25. 20:13

    정말 말하기 프로그래밍을 할 때 코드를 짜는 것도 중요하잖아.하지만 코드를 짤 때 정확한 결과가 나쁘지 않을 때도 있지만 결과값이 내가 의견한 것과는 전혀 다른 게 나쁘지는 않고. 마침 정상적으로 돌아오지 않을 때가 더 많아요.어디서틀렸는지도모르고답답합니다.정말 정말 중요한 디버깅을 먼저 가르쳐줬어야 했는데 정말 미안하게 생각한다.


    디버깅의 정확한 의미는 구글에서 검색해 주세요.저는 쓰기랑... 왜 쓰는지 그런 것만 알려줄게요! 디버깅은 먼저 프로그램이 어떻게 돌아가는지 확인할 때 사용한다.우리가 Ctrl+F5로 프로그램을 돌리면 컴퓨터 혼자 많이 계산하고 마칩니다.중간 어느 과정을 거치는지도 모르고 순식간에 ピ이라고 표현합니다.우리가 변수에 확실히 값을 넣었는지, 내가 생각한 대로 프로그램이 흐르고 있는지는 확인이 어렵습니다.그래서 저는 디버깅을 사용할 수 없을 때는 printf()를 이용해서 얘가 정확한 값을 가지고 있는지 계속 출력으로 확인했습니다.if문 안에 들었는지 안 들지도 사코이 듣고 그 안에 들면 if(~~){~~printf("첫번째 if문 도우루오갓 sound!!");} 그런 거 하면 다봉해서 cmd 창에 출력된 거 보고 아 if 글 잘 들어갔어. 라고 알고 그렇게 했습니다.아마 이러시는 분 계실 거예요. 하핫; 그런데... 이게... 바보같지?하하 큰 규모의 프로그램을 만들 때 어떻게 이런 걸로 다 확인할 수 있죠?프로그램이 자기 뜻대로 작동하는지 알 수 있는 비결이 바로 디버깅이다.자,그럼한번써볼까요?


    >


    VIsual Studio에 보시면 상단 메뉴바에 D라고 써있는 란이 있습니다.해당 칸을 누르면 여러 가지가 많은데...우리가 사용하는 것은 F5와 F9, F11임. ​'최근까지 Ctrl+F5만 쓰고 했었는데..'예는 '그대로 F5로 하면 실행할 수 있습니다만?'라고 하는 분이 많습니다. ​ F5는 디버깅을 시작하는 핫 키임.그러나 그대로 F5를 눌러서 실행시키면


    >


    그냥 이렇게 오른쪽에 뭔가 이상한 창문이 이것저것 열리고 아래는 주황색 실로 바뀌고... 함부로 말합니다. 그러다가 프로그램이 끝나면


    >


    보통, 원래의 화면으로 돌아오곤 합니다.나는 디버깅하라고 했는데 왜 아무것도 안되니? 똑같지? 중단점 설정 안 해서 옮겼어컴퓨터가 코드를 쭉쭉 처리하고 중단점을 발견하면 그 자리에서 처리를 멈추고 기다립니다.최근까지의 상황을 봐? 하고 멈추는 겁니다.한 번 간단한 소스로 마침표를 찍어서 디버깅해 봅시다.나카 단점은 원한다고 그래서 F9을 누르고 설정하기도 하고


    >


    저 빨간 박스 부분 중 원이라는 라인에 클릭하면 빨간 점이 생기게 됩니다.


    >


    이런 식으로 중단점이 생깁니다.(화면의 코드는 무시해 주세요.) 항상 사용하는 코드입니다.


    sum이라고 하는 덧셈함수를 우리가 만들었고, main함수 중에는 매우 간단한 소스가 걸려있습니다.지금 디버깅을 해볼까요?


    >


    이 창문에서


    >


    이렇게 중 단점을 찍어 주고, F5를 눌러봅시다.​


    >


    그랬더니 아까 찍은 빨간 점 위에 화살표가 이미 본인 올라가 있고, cmd창은 열렸을텐데.. 프로그램은 진행되지 않습니다.이것이 중단점이고, 즉 화살표가 가리키는 곳에서 프로그램이 잠시 멈춰 있다는 것입니다.여기서 제일 중요한 건


    >


    요기 하단에 있는 자동이라고 써있는 곳이에요. 역시 로컬! 이 칸을 보시면 이름값, 형식등이 써있고 선포한 변수가 들어있습니다.​ a, b, c변수는 잘 만들어졌는데 가격을 보니까-858993460.. 딱 봐도 쓰레기 값이죠? 앞에 변수에 대해 설명할 때 변수만 선언하면 초기화(값 넣는 소리)를 시키지 않으면 쓰레기 값이 들어있다고 알려드렸어요.딱 그렇네요.최근에 보시면요. 지금 이 창에서 F의 첫 번째 버튼을 눌러보겠습니다.F첫장은 1단계씩 코드 실행과 씁니다.


    >


    F11!


    >


    화살표가 한줄 아래로 떨어지면서 a=10을 실행하는 슴니다.그래서 시모 자동 칸에 있는 a로 선언된 변수에도 쓰레기 값이었던 것이 10이란 우리가 넣어 준 값이 되었습니다.​ 다시 F11를 눌러봅시다.


    >


    화살표가 역시 한줄 떨어지고 b과 변수에 20이라는 값을 넣었다는 것을 직접 보이고 있슴니다.다시 F를 하나 눌러보겠습니다.


    >


    c=sum(a, b), 라면 c에는 30값이 들어가야 합니다.그런데 화살표가 갑자기 저 위에 선언해 놓은 sum함수로 넘어갔네요.F첫 1개는 함수와 만나지 않으면 그 함수가 어떻게 처리되는지 나타냅니다.F의 첫 번째 버튼을 눌러 봅시다.


    >


    아까 그 빨간 박스 안에는 a, b, c라는 변수가 있었는데 갑자기 sum함수 안에 들어오면 자동매스에 있던 변수가 sum함수 안에서 사용되는 m, n, total로 바뀌어 버렸습니다.저 탭에 있는 변수는 해당 위치에서 사용되는 변수만 보여! 알 수 있습니다.sum(intn, intm)라는 2개의 앞날이 필요했지만, c=sum(a, b)에서 a와 b의 값을 지금에게 주었습니다.​ a의 값을 n가 가지고 가서 하나 0이 잘 들어갔는지를 볼 수 있어 b의 값을 m가 가지고 가서 20이 잘 들어간 것도 볼 수 있습니다.F를 하나씩 눌러봅시다.


    >


    total=m+n를 잘 수행하고 total이 30의 값을 갖게 된 것을 볼 수 있습니다.이로써 return total을 실행할 차례와 화살표도 보이고 있군요. ​ F11을 누르고 함수를 빠져서 나, 와봅시다. '}'까지 한 단계로 쳐서 2번 눌러야 합니다.


    >


    다시 화살표가 아까 그쪽으로 돌아왔네요! 그리고 아래쪽 자동 칸을 봤는데 m, n, total이 사라지고 sum이 반환되었습니다. 다 됐습니다.이와 같이 함수에서 return 값이 무엇이었는지도 모두 보여줍니다.아직 c = sum(a, b); 카라 sum(a,b) 부분만 처리했기 때문에 c에는 값이 들어있지 않습니다. F를 하나씩 눌러봅시다!


    >


    오 마침내 c에 아까 sum에서 반환된 값인 30이 들었어요!​ 디버깅을 모를 때는 c=sum(a, b);다음 printf("Percentd\n", c)을 입력하고 cmd창에서 30과 뜨는 것을 봐야 아.. c에 a+b의 30이 잘 진입 크봉잉룰 알고 있었는데, 이는 printf() 같은 것 필요 없는 프로그램이 어떻게 흘러가고 있는지 볼 수 있게 되었습니다.​ 이제 F11을 누르면 14번째 줄을 처리하고('}'부분)프로그램이 종료가 됩니다.


    >


    디버깅이라는 것은, 스토리를 알면 세상보다 편하고 행운인 것은 없습니다.​ 100줄이 이양되는 프로그램을 짰는데, 돌아보니 원하는 결과가 자신의 오지 않다.하지만 어디서 잘못된 건지 모르겠다.아니면 여기가 무른 데에 잘 가는지 모르겠다.->중단점을 원하는 곳에 찍고 디버깅을 시작한 F11에 한줄씩 어떻게 변수가 처리되는지 볼 수 있습니다.때는 아내 sound에서 F5로 나뭇결 스토리, F11에 닿으면, main의 가장 아내 sound 주니까 디버깅을 시작합니다.이거 알아야지... 프로그래밍 할 수 없어요.어디서 잘못됐는지 전혀 모르기 때문입니다. 변수에 희망값이 잘 들어 있는지 어떤지, 함수는 잘 처리되었는지. 디버깅으로 다 알 수 있어요.디버깅을 많이 쓰다 보면 어떻게 사용하는지도 보일 거예요! 꼭 시험해 보세요 많이반복문도디버그도돌리고조건문도돌리고어떻게잘되고있는지다확인해보세요.


    항상 공부하고 알게된 디버깅을 통해 프로그래밍에 있어서 무기가 만들어졌습니다.리피트 글을 쓰고 싶은데 어디서 끊어야 할지 잘 모르겠어.디버깅을 돌려서 언제 멈춰야 하는지 눈으로 확인해 주세요.조건문이 확실한지 모르겠고 조건문이 처리될지도 모른다.디버깅을 돌려 화살표가 if문 안에 있는 행을 처리하는지를 눈으로 확인하세요! 진실..다행. 이게 있고... 다 쓰고 편하게 코딩하세요!


    댓글

Designed by Tistory.