ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (C/C++) 20강 몹시매우 중요한 디버깅 (Visual Studio 2019) 와~~
    카테고리 없음 2020. 2. 29. 02:44

    올바른 스토리 프로그래밍을 실시할 때, 코드를 짜는 것도 중요하다.하지만 코드를 짤 때 정확한 결과가 나쁘지 않을 때도 있지만 결과값이 내가 생각했던 것과는 전혀 다른 게 나쁘지는 않고. 마침 정상적으로 돌아오지 않을 때가 더 많아요.어디서틀렸는지도모르고답답합니다. 되게 정스토리, 정스토리, 중요한 디버깅을 먼저 알려드렸어야 했는데... 죄송합니다. 하하


    디버깅 디버깅의 매우 정확한 의의는 구글에서 찾아보도록 합시다.저는 쓰기랑... 왜 사용하는지 그런 것만 알려드릴게요! 디버깅은 먼저 프로그램이 어떻게 돌아가는지 확인할 때 사용합니다.우리가 Ctrl+F5로 프로그램을 돌리면 컴퓨터 단독 완전히 계산하고 마칩니다.중간에 어떤 과정을 거치는지도 모르고 순식간에 ピ과인이 되어 버립니다.우리가 변수에 확실히 값을 넣었는지, 제가 소견한 대로 프로그램이 흐르고 있는지는 확인하기 어렵습니다.그래서 저는 디버깅을 사용할 수 없을 때는 printf()를 이용해서 얘가 정확한 값을 가지고 있는지 계속 출력으로 확인했습니다.if문안에 들었는지 안들어갔는지도 사건이 들어가고 그안에 들어갔더니 if(~~){~~printf}첫번째 if문 들어간 소리!!(----);}이렇게 cmd창에 출력된 것을 보고 아 if문에 잘 들어갔구나. 하고 그렇게 했습니다.아마 이러고 있는 사람이 꼭 있을 거예요. 하핫; 그런데... 이게... 바보같지?하하. 큰 규모의 프로그램을 만들 때 어떻게 이런 걸로 다 확인할 수 있죠?프로그램이 내 주변으로 작동하는지 알 수 있는 방법이 디버깅입니다.즉시 사용해 봅시다


    >


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


    >


    그냥 이렇게 오른쪽에 뭔가 이상한 창문이 이것저것 열리고 아래는 주황색 실로 바뀌고... 함부로 말합니다. 그리고 방송이 마지막과 인면


    >


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


    >


    그 빨간 박스에서 원이라는 라인을 클릭하면 빨간 점이 생기게 됩니다.


    >


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


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


    >


    이 창문에서


    >


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


    >


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


    >


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


    >


    F하나하나!


    >


    화살표가 한줄 아래로 네료탈소 a=하나 0을 실행시켰습니다.그래서 시모 자동 칸에 있는 a로 선언된 변수에도 쓰레기 값이었던 것이 하나 0이란 우리가 넣어 준 값이 되었습니다.다시 F를 하나씩 눌러보겠습니다.


    >


    화살표가 역시 한줄 네료탈소 b과 변수에 20이라는 값을 넣었다는 것을 직접 보이고 있습니다.​ 다시 F11를 눌러봅시다.


    >


    c=sum(a, b), 라면 c에는 30값이 들어가야 한다.그런데 화살표가 갑자기 저 위에 선언해 놓은 sum함수로 옮겨졌네요.F하나는 함수를 만과인면, 해당 함수가 어떻게 처리되는지까지 나타냅니다.F를 하나씩 눌러봅시다.


    >


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


    >


    total=m+n를 잘 수행하고 total이 30의 값을 갖게 된 것을 볼 수 있습니다.사양 return total을 실행할 차례라고 화살표도 가리키고 있죠.F 하나하나를 누르고 함수를 빠져나와서 자신에게 와봅시다. '}'까지 한 단계로 쳐서 2번 눌러야 한다.


    >


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


    >


    오 마침내 c에 아까 sum에서 반환된 값인 30이 들었어요!디버깅을 모를 때는 c=sum(a, b);후 printf("파".세인트 d\n", c)을 입력하고 cmd창에서 30으로 부상하는 것을 봐야 아.. c에 a+b의 30이 잘 도우루오갓 구자 싱을 알고 있었는데, 지금은 printf() 같은 것 필요 없는 프로그램이 어떻게 흘러가고 있는지 볼 수 있게 되었습니다.​ 지금 F11을 누르면 14번째 줄을 처리하고('}'부분)프로그램이 종료가 됩니다.


    >


    디버깅이라는 것은, 스토리를 알면 세상보다 편하고 행운인 것은 없습니다.​ 한 00줄이 이양되는 프로그램을 짰는데, 돌아보니 원하는 결과가 본인의 오지 않다.그런데 어디서 잘못됐는지 모르겠다.비록 여기가 어린이 잘 될지 모르겠다. 중 단점을 원하는 곳에 찍어, 디버깅을 시작한 F일본에 1개 1개, 어떻게 변수가 처리되는지 확인할 수 있습니다.또는 거소 음부에서 F5로 나뭇결 스토리, F일일로 붙이면 main의 가장 쵸소움 주니까 디버깅을 시작합니다.이거 알아야지... 프로그래밍 할 수 없어요.어디서 잘못됐는지 전혀 모르기 때문입니다. 변수에 희망값이 잘 들어 있는지 어떤지, 함수는 잘 처리되었는지. 디버깅으로 다 알 수 있어요.디버깅을 많이 쓰다 보면 어떻게 사용하는지도 보일 거예요! 꼭 시험해 보세요 많이반복문도디버그도돌리고조건문도돌리고어떻게잘되고있는지다확인해보세요.


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


    댓글

Designed by Tistory.