Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

C/C++ 프로젝트의 시작 프로그램으로 .NET Core EXE를 지정하는 경우 닷넷 디버깅이 안 되는 문제


[2020-06-23 업데이트 - 최신 버전의 비주얼 스튜디오에서 "Managed Only (.NET Core)" 디버깅 옵션이 추가되었습니다.

C/C++ 프로젝트를 DLL로 만든 경우 디버깅을 하려면 속성 창의 Debugging 옵션을 이용해 다음과 같이 환경 구성을 할 수 있습니다.

profiler_project_and_folder_settings_basic.png

그런데 저렇게 외부 EXE 파일 대상으로 .NET Core 프로그램을 지정하는 경우, 예를 들어 다음과 같이,

Command: c:\program files\dotnet\dotnet.exe
Command Arguments: exec "c:\temp\ConsoleApp1\ConsoleApp1\bin\Debug\netcoreapp2.1\ConsoleApp1.dll"
Working Directory: c:\temp\ConsoleApp1\ConsoleApp1\bin\Debug\netcoreapp2.1\

설정하고 "Managed only" 모드로 F5 디버깅을 실행하면 다음과 같은 오류가 발생합니다.

A fatal error has occurred and debugging needs to be terminated. For more details, please see the Microsoft Help and Support web site. HRESULT=0x8000ffff. ErrorCode=0x0.


아마도 .NET Managed Debugger가 대상을 .NET Full Framework으로 인식하고 붙으려는 시도를 하기 때문에 실패하는 것으로 보입니다.

실제로 대상 프로세스를 실행해 두고, "Debug" / "Attach to Process..." 메뉴를 이용해 연결하려는 경우 다음의 5가지 유형이 Managed로 나옵니다.

  • Managed (CoreCLR)
  • Managed (Native compilation)
  • Managed (v3.5, v3.0, v2.0)
  • Managed (v4.6, v4.5, v4.0)
  • Managed Compatibility Mode

이 중에서 CoreCLR 유형으로 연결하면 Managed 코드 디버깅이 가능합니다. 반면 "Managed (v4.6, v4.5, v4.0)"와 같은 걸로 지정하면 디버깅이 안 됩니다. 즉, C/C++ 프로젝트에서의 "Managed only" 모드는 CoreCLR에 대한 배려가 없는 것 같습니다.

어쩔 수 없습니다. ^^ Managed 디버깅을 하고 싶다면 대상 EXE를 만든 프로젝트 기준으로 F5 디버깅을 해야 합니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 8/20/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2019-01-31 11시42분
F5 Debug failed with 0x8000ffff when C/C++ project and .NET Core project is mixed.
; https://developercommunity.visualstudio.com/t/F5-Debug-failed-with-0x8000ffff-when-CC/1357382
정성태

... 121  122  123  124  125  126  127  [128]  129  130  131  132  133  134  135  ...
NoWriterDateCnt.TitleFile(s)
2889정성태3/17/201526751Windows: 107. (2015-03-12) 업데이트 이후 작업 표시줄 또는 탐색기의 반응이 느려지는 문제 [1]
2888정성태3/17/201524582.NET Framework: 508. Visual Studio 빌드 - fatal error C1033: cannot open program database ''
2887정성태3/13/201521899.NET Framework: 507. CoreFx 빌드하는 방법
2886정성태3/13/201523661오류 유형: 274. CoreFx, CoreCLR 빌드 시 "error CS0518: Predefined type 'System.Object' is not defined or imported" 오류 해결 방법
2885정성태3/13/201534724VS.NET IDE: 99. Visual Studio는 2019는 32비트, 2022부터 64비트 버전입니다. [2]
2884정성태3/12/201528308.NET Framework: 506. .NETCore = CoreFX + CoreCLR [5]
2883정성태3/10/201525419.NET Framework: 505. OpenCover 소스 코드 분석을 Visual Studio 2013에서 하는 방법 [1]
2882정성태3/10/201524127.NET Framework: 504. OpenCover 코드 커버리지 도구의 동작 방식을 통해 살펴보는 Calli IL 코드 사용법
2881정성태3/9/201524827개발 환경 구성: 261. OpenCover 오픈 소스를 이용한 .NET 코드 커버리지(Code coverage)
2880정성태3/7/201522940개발 환경 구성: 260. C# Code Coverage 도구 - Semantic Designs 소개
2879정성태3/3/201528061개발 환경 구성: 259. Visual Studio 없이 Visual C++ 컴파일하는 방법
2878정성태2/28/201528977.NET Framework: 503. == 연산자보다는 Equals 메서드의 호출이 더 권장됩니다. [3]파일 다운로드1
2877정성태2/28/201522598.NET Framework: 502. 연산자 재정의(operator overloading)와 메서드 재정의(method overriding)의 다른 점 - 가상 함수 호출 여부 [3]파일 다운로드1
2876정성태2/27/201525339VS.NET IDE: 98. IntegraStudio - Visual Studio에서 Java 프로그램 개발
2875정성태2/26/201524287디버깅 기술: 72. Visual Studio 2013에서의 sos.dll 사용 제한
2874정성태2/26/201520742디버깅 기술: 71. windbg + 닷넷 디버깅 (2) - null 체크 패턴
2873정성태2/25/201538478.NET Framework: 501. FtpWebRequest 타입을 이용해 FTP 파일 업로드 [4]파일 다운로드1
2872정성태2/25/201522615디버깅 기술: 70. windbg + 닷넷 디버깅 (1) - 배열 인덱스 사용 패턴
2871정성태2/24/201526505개발 환경 구성: 258. 윈도우 8.1에서 방화벽과 함께 FTP 서버 여는 (하지만, 권장하지 않는) 방법 [1]
2870정성태2/24/201527721개발 환경 구성: 257. 윈도우 8.1에서 방화벽과 함께 FTP 서버 여는 방법
2869정성태2/23/201521505.NET Framework: 500. struct로 정의한 값 형식(Value Type)의 경우 Equals 재정의를 권장합니다.파일 다운로드1
2868정성태2/23/201526184VS.NET IDE: 97. Visual C++ 프로젝트 디버깅 시에 Step-Into(F11) 동작이 원치 않는 함수로 진입하는 것을 막는 방법 [2]
2867정성태2/23/201519906오류 유형: 273. File History - Failed to initiate user data backup (error 80070005)
2866정성태2/23/201521794오류 유형: 272. WAT080 : Failed to locate the Windows Azure SDK. Please make sure the Windows Azure SDK v2.1 is installed.
1868정성태2/20/201518706오류 유형: 271. The type '...' cannot be used as type parameter 'TContext' in the generic type or method 'System.ServiceModel.DomainServices.EntityFramework.LinqToEntitiesDomainService<T>
1866정성태2/20/201519886오류 유형: 270. "aspnet_regiis -i" 실행 시 0x00000006 오류 해결 방법
... 121  122  123  124  125  126  127  [128]  129  130  131  132  133  134  135  ...