1 minute read

C언어 디버깅 하는 방법

  • 🦄 printf 찍기

가장 간단한 방법이다. 실행하고자 하는 파일에 확인하고자 하는 변수를 찍어보는 것이다. 터미널에 출력이 된다.

단 너무 크기가 큰 프로그램은 확인이 어려울 수 있다.

  • 🦄 assert문으로 확인하기

확인이 필요한 부분에 assert()를 넣으면 true / false 여부를 확인 할 수 있다.

#include <assert.h>
assert( cnt < maxnum );

// 터미널에 assert test

스크린샷 2023-09-22 11.15.20

  • 🦄 test code 작성하기

    확인해야하는 내용을 작성해서 테스트코드를 만드는 방법이다. assert문을이용해서 작성하는것은 동일하지만 좀더 구체적인 상황에 대한 테스트가 가능하다. MAKEFILE 수정도 필요하다. 당연히 MAKEFILE 언어에 대한 추가 공부가 필요하다.

    test: test.o csapp.o proxylib.o
    	$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)
    	@echo run test code automatically
    	./$@
    

  • 🦄 gdb 돌리기

    MAKEFILE파일에서 -g플래그 추가가 필요하다.

    vs code에 있는 스크린샷 2023-09-22 11.22.41이 버튼을 누르면, launch.json 파일을 작성할 수 있다.

    name, program 을 수정해야 한다.

    {
        "configurations": [
            {
                "name": "디버깅 시작!",
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}/${fileBasenameNoExtension}",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${fileDirname}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    },
                    {
                        "description": "Set Disassembly Flavor to Intel",
                        "text": "-gdb-set disassembly-flavor intel",
                        "ignoreFailures": true
                    }
                ]
            }
        ]
    }
    

    그 이후에 디버깅이 필요한 파일을 실행하면 실행 옵션을 선택할 수 있음

Updated:

Leave a comment