Mac의 VSCode에서 C 언어 디버깅

소개


  • Mac에서만 시도
  • 1 폴더 1 프로젝트입니다.
  • 하나의 폴더에 test.c test2.c 같은 것은 안됩니다

  • 어디서 Segmentation Fault했는지 알 수 있습니다!
  • 2019/5/21로 업데이트

  • 있는 것


  • VSCode
  • VSCode용 C/C++ 확장
  • Xcode Command Line Tools

  • 해보자



    코드


  • 실행하면 Segmentation Fault가 발생합니다

  • test.c
    #include <stdio.h>
    
    int main(int argc, char const *argv[])
    {
      int i;
      int *pointer;
    
      for (i = 0; i < 3; i++)
      {
        printf("Hello World!\n");
      }
    
      *pointer = 1;
    
      return 0;
    }
    

    1단계: 환경 선택


  • 적절하게 저장

  • 디버그 → 디버그 시작 선택
  • 키보드에서 (Fn+)F5
  • Touch Bar를 가진 사람은 "▶︎"

  • 뭔가 나오므로 「C++(GDB/LLDB)」를 누른다
  • "clang 난차라"또는 "gcc 난챠라"라면 둘 다 OK (기본적으로 큰 차이 없음)
  • Launch.json이 있으면 설정이 끝납니다.
  • 자동으로 2단계로 진행할 수 있습니다

  • 2단계: 막상 디버깅


  • 작성한 소스 코드로 돌아가기
  • 다시 "디버그 시작"
  • (1 단계의 2와 동일)

  • 허용 하시겠습니까? 같은 것을 들으면 암호 입력
  • Segmentation Fault가 있었기 때문에 이렇게 화가납니다
  • 이와 같이 Breakpoint를 설정하면
  • 해당 장소에서 멈춥니다

  • 빨간색 원 버튼을 누르면 프로그램을 순서대로 따라갈 수 있습니다.
  • 루프를했기 때문에 파란색으로 둘러싸인 변수 i가 증가하고 있습니다
  • 좋은 느낌의 설명을 찾았으므로 인용하겠습니다


  • [계속] 버튼: 중단된 프로그램 실행 계속
    [스텝 오버] 버튼 : 현재 행을 실행합니다. 행에 함수 호출이 포함되어 있으면 함수를 호출하여 함수 호출 후 행에서 실행을 중단합니다.
    [Step In] 버튼 : 현재 행을 실행합니다. 행에 함수 호출이 포함되어 있으면 함수의 첫 번째 행에서 실행 중단
    - [스텝 아웃] 버튼 : 현재 실행중인 함수를 끝까지 실행하고 그 함수를 호출 한 다음 행에서 실행을 중단합니다.
    [재부팅] 버튼: 디버깅을 처음부터 다시 시작
    [정지] 버튼: 디버깅 종료
    VS Code로 Python 코드의 디버깅도 손쉽게! ! (1/4) : Visual Studio Code로 시작하는 Python 프로그래밍 - @ IT
  • 빨간색 사각형을 누르면 종료입니다. 수고하셨습니다

  • 보충


  • scarf()는 사용하지 않는 것이 편합니다.
  • 명령 줄 인수를 launch.json의 args에 씁니다
  • 전역 변수를 모르겠습니다

  • 참고



    VSCode에서 C 언어 실행 - Qiita
    Mac의 Visual Studio Code에서 C / C ++를 디버깅 할 때까지 (OSX10.11.6, VSCode1.4.0) - Qiita

    좋은 웹페이지 즐겨찾기