성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] 그냥 RSS Reader 기능과 약간의 UI 편의성 때문에 사용...
[이종효] 오래된 소프트웨어는 보안 위협이 되기도 합니다. 혹시 어떤 기능...
[정성태] @Keystroke IEEE의 문서를 소개해 주시다니... +_...
[손민수 (Keystroke)] 괜히 듀얼채널 구성할 때 한번에 같은 제품 사라고 하는 것이 아...
[정성태] 전각(Full-width)/반각(Half-width) 기능을 토...
[정성태] Vector에 대한 내용은 없습니다. Vector가 닷넷 BCL...
[orion] 글 읽고 찾아보니 디자인 타임에는 InitializeCompon...
[orion] 연휴 전에 재현 프로젝트 올리자 생각해 놓고 여의치 않아서 못 ...
[정성태] 아래의 글에 정리했으니 참고하세요. C# - Typed D...
[정성태] 간단한 재현 프로젝트라도 있을까요? 저런 식으로 설명만 해...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Visual Studio - 닷넷 소스 코드 디버깅 중 "Decompile source code"가 동작하는 않는 문제</h1> <p> 최근의 Visual Studio에서 분명히 decompiled 시킨 어셈블리임에도 불구하고,<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='vs_gen_src_access_0.png' src='/SysWebRes/bbs/vs_gen_src_access_0.png' /><br /> <br /> 정작 Call Stack에서 해당 코드를 보려고 더블 클릭을 하면 곧바로 소스 코드가 보이지 않고 다음과 같은 창이 뜹니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='vs_gen_src_access_1.png' src='/SysWebRes/bbs/vs_gen_src_access_1.png' /><br /> <br /> "Decompile source code" 링크를 클릭해도 해당 소스 코드가 열리지 않는데요, 디컴파일된 소스 코드 위치를 찾아, <br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\> <span style='color: blue; font-weight: bold'>dir /a/s FileChangesMonitor.cs</span> Volume in drive C has no label. Volume Serial Number is 7090-BBAB Directory of <span style='color: blue; font-weight: bold'>%LOCALAPPDATA%\Temp\.vsdbgsrc\2E5F9520028DF5D1934C4EF28AB8655FBAFE89A456A92B6F3491798DF6DFE690</span> 2023-01-31 오후 04:39 23,277 FileChangesMonitor.cs 1 File(s) 23,277 bytes Total Files Listed: 1 File(s) 23,277 bytes 0 Dir(s) 567,419,895,808 bytes free C:\> </pre> <br /> "Browse and find CacheDependency.cs..." 링크를 눌러 위의 위치를 지정했더니 이런 오류 창이 뜹니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Find Source: CacheDependency.cs FileChangesMonitor.cs You don’t have permission to open this file. Contact the file owner or an administrator to obtain permission. </pre> <br /> 재미있는 건, 실제로 해당 파일에 대한 접근 권한이 없다는 점입니다.<br /> <br /> <img alt='vs_gen_src_access_2.png' src='/SysWebRes/bbs/vs_gen_src_access_2.png' /><br /> <br /> 게다가 관리자 권한은 물론 시스템 권한으로도 소유권을 가져올 수 없습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>takeown /f "%LOCALAPPDATA%\Temp\.vsdbgsrc\2E5F...[생략]...6DFE690\FileChangesMonitor.cs" /a /r /d y</span> ERROR: Access is denied. </pre> <br /> 어쩔 수 없습니다. ^^; 이런 경우 그냥 .vsdbgsrc 하위 디렉터리를 전부 삭제하는 식으로 해결할 수 있습니다. 다행히 파일 자체에 대한 권한이 막힌 것이어서 그것을 포함한 디렉터리는 삭제가 가능합니다. 그다음, 다시 Visual Studio의 Modules 창(단축키: Ctrl+Alt+U)에서,<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='vs_gen_src_access_3.png' src='/SysWebRes/bbs/vs_gen_src_access_3.png' /><br /> <br /> "Extract Source Code" 메뉴를 이용해 DLL로부터 소스 코드 파일을 생성하면 이후 소스 코드 디버깅이 다시 잘 되는 것을 확인할 수 있습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> "Extract Source Code"를 (실행했던 적이 아닌) 실행한 Visual Studio가 열려 있는 경우, 생성된 소스 코드들은 현재의 Visual Studio가 배타적으로 열고 있어 다른 에디터에서 열려고 하면 오류가 발생하는 경우도 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > The process cannot access the file because it is being used by another process. </pre> <br /> 만약, 소스 코드 디버깅이 안 돼서 "Extract Source Code" 작업을 다시 해야 하는 경우라면 그냥 Visual Studio를 종료하고 파일 탐색기를 이용해 지우면 됩니다. 혹은, "Tools" 메뉴의 "External Tools..."에,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Visual Studio - External Tools에 Shell 내장 명령어 등록 ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/13244'>https://www.sysnet.pe.kr/2/0/13244</a> </pre> <br /> 다음과 같은 설정으로 등록해 두면 이후 편리하게 쓸 수 있을 것입니다. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Command: %comspec% Arguments: /C rmdir /s /q "%LOCALAPPDATA%\Temp\.vsdbgsrc" </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
6471
(왼쪽의 숫자를 입력해야 합니다.)