[C#] M1 Mac - VS Code 디버깅(Debugging)

Nuwooo·2022년 10월 19일

M1 Mac VS Code로 디버깅하는 보다 나은 방법을 아직도 찾고있습니다.
아래 방법보다 더 근본걱인 해결책이 있다면 알려주시면 감사하겠습니다

  • 많은 블로그나 구글링에서 나오던 해결 방법은 VS Code 명령 팔레트에서 해당 명령을 실행하라고 나와있음
    .Net: Generate Assets for Build and Debug
  • .vscode 라는 디렉토리에서 자동으로 lunch.json 파일을 생성해주어 디버깅 가능하다 설명

일단 이 지점부터 팠어야 했는데 아래 나열한 뻘짓을 할게 아니라...
내 경우에 .Net: Generate Assets for Build and Debug or VS Code - new c# Debugger 선택하면 오류가 남

  • 오류 메시지
Unable to generate assets to build and debug. OmniSharp server is not running.
  • 영어로 검색해서 하나씩 클릭해 봄...영어를 읽는데도 무슨 말인지 모르겠음. 번역까지 돌려보는데 대부분 말은 Restart OmniSharp 라는 말만 되풀이해서 나옮.

  • 다 시도를 해보고 알게 되었지만 이 러시아 유튜버 영상이 가장 근접한 답을 주었다..
    https://youtu.be/zp_Yp7mD1LE

  • VS Code 설정 - OimniSharp: Wait For Debugger 체크표시로 설정

  • VS code - 왼쪽 메뉴 Run&Debugging tap - create new lunch.json - .NET5+ and .Net Core

"conficigurations": [ ]
  • 이 부분에 코드뷰 오른쪽 하단 [구성추가] 버튼 클릭
{} .NET: Launch .NET Core Console App 

// 아래 부분을 수정해준다 
"program": "${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>",
  • 이 스크립트는 지금 수정해야 될 부분을 < > 로 표시해주었지만, 작업폴더 이후로 전체 경로를 수정해야 되었다
  • 영상에서는 프로젝트명을 통째로 넣어주었지만, 오류남 -> .dll 파일 경로로 넣어줘야 됨
  • 해당 작업 파일 오른쪽 마우스 클릭해서 상대경로얻기 워크플레이스 폴더 뒤에 붙여넣기
"program": "${workspaceFolder}/debugTest/bin/Debug/net6.0/debugTest.dll",

  • 중단점 설정하고, 디버깅 탭에서 실행버튼을 눌러주면 된다!!

  • 마침내...!

  • 하지만 여기서도 해결해야 될 문제가 더 있었다.

    • Terminal에서 dotnet run을 해주지 않으면, 최초 1회 디버깅 이후 다시 디버깅 실행이 씹혀버리는 문제 발생
    • lunch.json 에 구성을 프로젝트명.dll 이런식으로 넣여줘야 하는데, 작업하던 프로젝트 파일이 바뀌면 그 파일에 해당하는 .dll 파일에 경로로 변경해줘야 했음. 디버깅이 필요할 때마다 그 파일들을 일일히 경로를 삭제하고 추가해주는건 번거롭고 시간이 걸림.
    • 간단한 C#작업은 Visual Studio로 해야 디버깅이 더 간편할것 같다는게 결론
    • 다행이도 Unity 디버깅은 이렇게 번거롭게 작동하지 않고, Unity Debugger extention 정상작동해주었다. (여기서 유추해서 C# extention 을 버전도 낮추어보고 이리저리 굴려보았지만 좀처럼 답을 찾기 어려웠다)
  • 위 문제들을 해결해보려 했지만 아직 답을 찾지 못했고, 오늘 거의 모든 공부시간을 여기다 쏟아부어서 머리가 뿌옇다.

  • 내가 VS Code 설정에서 건드리고 최종적으로 고정한 Omnisharp 세팅

OimniSharp: Wait For Debugger - true

OimniSharp: Use Modern Net  - false 
OimniSharp: Sdk Include Prereleases  - true

OimniSharp: Auto Start - true 

  • 위에 링크를 보기 한 차례 전, 시도한 Youtube 링크 : https://youtu.be/Z2gImsUMFwI
  • 뜻하지 않게 여기서 VScode로 C#프로젝트를 솔루션 단위로 설정하는 방식을 알 수 있었음.
    • 하지만 원래 목적인 디버깅은 여기서도 해결이 안 됨.
// 영상에서는 다 terminal로 조작했지만, VS Code - 작업폴더(Test) 생성 - Terminal 열기 
dotnet new sln   // 솔루션 파일을 생성해줌 
dotnet new console -o netCore    
// 작업폴더 안에 netCore 라는 이름으로 프로젝트 환경 생성해줌 
// 원래 치던 dotnet new console 로 할 때에 비해 폴더 생성 스텝이 줄었다 

dotnet sln add netCore 
// Project 'Test/netCore.csproj' added to the solution. 
// 솔루션에 프로젝트를 참조 추가해줌 (왜 해주는 건진 모르겠음) 

dotnet new classlib -o newclasslib 
// The template "Class libaray" was created sucssfully. 
// 클래스 라이브러리 만들어준건데, 이것도 왜 하는지 모름 

cd netCore      // 프롬퍼트 기준을 옮김 
dotent add reference ../newclasslib/newclasslib.csproj 
// 프로젝트 참조 걸어줌 (역시 왜하는진 모르겠음) 

ls     // 중간중간 치는 터미널 명령어, 폴더 파일 보여줌

  • 내가 시도한 방법 나열
  • 마이크로소프트 공식 메뉴얼 보기 -- 다 시도해봤지만 안됨.
    링크1 https://learn.microsoft.com/ko-kr/dotnet/core/tutorials/with-visual-studio-code?pivots=dotnet-6-0
    링크2 https://learn.microsoft.com/ko-kr/dotnet/core/tutorials/debugging-with-visual-studio-code?pivots=dotnet-6-0
  • 구글링하고 블로그들을 보니까 몇 몇 키워드를 볼 수 있었음
    • Insiders로 해서 문제가되는 건가? -> VS Code로 아래 시도한 것들을 똑같이 시도해 봄 안 됨!
      (왔다갔다 시간만 2배로 걸린 느낌)
    • C# extention 문제인가? 버전을 낮추어보라고 나옮 -> 해결 안됨
      근데 어디 버전으로 가지? (링크) <- 보고 잘은 모르겠지만 1.23으로 가야겠다 옮겨 봄
    • VS Code - OmniSharp 설정 문제인가?
      • C# extention 1.23.xx 버전으로 가면 많은 해결 방법으로 나오는 Use Global Mono 설정이 보임
      • C# extention 최신버전에서는 이 설정이 안 보이고 [Use Modern Net] 이라는 설정을 체크박스 푸는 것이 비슷한 효과를 주는 듯 보였음
      • 버전 낮추어보고, 최신으로 했다가 OmniSharp 설정 바꿔가며 디버깅 시도 했지만 해결 안 됨

  • 내가 이 뻘짓을 하게 된 것은 내 IDE 변화 경험과 결부되어 있다

나의 개발환경 IDE 변화

  • VS Code로 입문, 하지만 국비학원 + 강의에서 다 Visual Studio 로 수업 진행
  • VS Code로 C# 개발환경을 구축하는 걸 구글링해서 해놓았지만, 몇몇 사유로 갈아탐
    • C# Extention 확장프로그램을 VSCode에 추가했지만, 디버깅이 안됨
    • Visual Studio 에선 [솔루션 - 프로젝트] 이렇게 C# Script 파일을 생성했는데, VSCode에서는 그 설정을 어떻게 하는지 모르겠음.
    • 사실, dotnet run 해서 작동되니까 우선 넘어갔지만 찝찝했고 디버깅을 아무리 시도해도 계속 오류...그냥 무거워도 Visual Stuio(VS)로 가자
    • GitHub를 해보려니까 이번엔 VS가 계속 뭔가 이상한 오류를 뱉음.
      -> 구글링 하다보니까 엉뚱하게도 [VS Code -Insdiers]로 M1 Mac은 하면 좋다는 글을 발견해버림
      링크 : https://www.clien.net/service/board/lecture/15771719
      (이 설정 관련해서도 또 업로드해야할 것이 있지만 넘어가자)
  • 위 링크를 보고 자잘한 오류를 해결하고 다시 개발환경을 그럼 [VS Code - Insdiers]로 쓸 기회를 포착했다고 느낌
    • Insiders는 별개의 앱이라서 환경세팅을 다시 처음부터 해줘야 했음.
    • C#은 상관없지만 C/C++ 세팅을 굳이 지금 다시 할 필요는 없겠다 싶었고,
      Insiders 쓰다가 오류날 때를 대비 2-Track 전략으로 가야겠다 마음 먹음
    • GitHub, Silicon Mac 작업환경 고려 다시 VS Code - Insiders로 옮김
    • 근데 디버깅이 안되네??
profile
채우는중

0개의 댓글