본문 바로가기

CSharp/Development

Visual Studio 2005 .NET Framework Source 확인

System.Text.dll 과 같은 시스템 dll 디버깅 방법을 소개해 드리도록 하겠습니다.

 

vs 2005 debugging 방법을 이번 포스트에서 소개 해 드리고 다음번에 2008 방법을 소개해 드리도록 하겠습니다.

사용해 본 결과 vs 2005는 까다롭고 *_*;;

 

vs 2008은 엄청나게 쉽습니다. *_*;;

 

Google Search 결과 CodePlex에서 NetMassDownloader 라는 프로젝트로 진행되어서 있더군요 *_*;;

영어가 짧아서 자세한 건 잘 모르지만서도 *_*;

 

여기에서 아래와 같은 방법으로 vs 2005, 2008을 동일하게 작업 하실 수 있습니다.

 

http://netmassdownloader.codeplex.com/

 

저는 Feature Release 1.5.0.1 이놈을 다운 받아서 진행하였습니다.

 

 

좌측에 보이는 Downloads 를 통하여 직접 다운 받았습니다.

 

다운 받아서 압축을 풀어 보시면 아래와 같이 생겨 있습니다.

도움말도 포함되어 있구요 *_*

 

 

캡쳐 화면을 자세히 보시면 스펨신고라고 나오는데요 *_*;;;;;;;;;;;;;;;;;

 

이놈이 제가 windows server 2008 R2를 사용하고 있는데.. 저런 식으로 잔상이 낳아 있어요 *_*;;

이거 없애는 방법 아시는 분 가르쳐 주세요. 왜 생기는 지도 모르겠고요 *_*;;;;;;;

 

명령프롬프트를 통해서 지금 압축이 풀어져 있는 디렉토리로 들어오셔도 되고 아니면 해당 경로를 입력하셔도 됩니다.

NetMassDownloader.exe 를 실행시키려고 하는 것입니다. *_*

 

그리고 아래와 같은 명령어를 입력하시면 됩니다.

 


NetMassDownloader.exe -d "C:\Windows\Microsoft.NET\Framework64\v2.0.50727" -output "D:\ReferenceSource"


NetMassDownloader.exe -d "C:\Windows\Microsoft.NET\Framework\v2.0.50727" -output "D:\ReferenceSource"

 

위와 같이 입력하시면 됩니다. *_*

 

 

 

이렇게 압축이 자동으로 풀립니다.

어마어마한 파일들이 있는 관계로 시간이 좀 많이 걸립니다. *_*

 

 

대략 한 시간 정도 걸린 것 같습니다. 우웩

 

 

 

 

도구 –> 옵션 –> 디버깅

 

위의 이미지에서 아래와 같이 변경되어야 합니다.

 

 

기호로 넘어가셔서 추가 되어야 합니다.

 

기호 파일(.pdb) 위치(L): 에 폴더를 클릭하셔서 압축을 푼 디렉토리로 설정하시면 됩니다.

“D:\ReferenceSource”

 

확인을 선택하게 되면 아래와 같이 나타납니다.

 

 

설정은 이제 끝났습니다.

이제 직접 디버깅을 해 보도록 하겠습니다.

 

반듯이 기호 로드를 먼저 하셔서 기호를 로드 하신 후 작업하셔야 됩니다.

기호를 로드 하는 방법은 두 가지가 있습니다.

 

첫 번째는 Ctrl + Alt + U를 선택하셔서

 

 

원하는 Dll에 기호 로드를 선택하시면 됩니다.

이왕이면 mscorlib.dll 에 기호로드를 선택하시면 좋을 것 같습니다.

 

 

로그하게 되면 아래와 같이 기호파일이 선택한 경로로 설정 되는 것을 볼 수 있습니다.

 

 

디버깅을 원하는 dll에 기호를 로드하셔야 소스를 확인 할 수 있습니다.

그리고 아래와 같이 연결하는 방법도 있으나 좀더 디테일하게 디버깅이 되지 않아 아래 방법은 권장 하지 않습니다.

 

 

 

디버깅할 호출 스택을 선택하고 기호 로드를 선택하게 됩니다.

 

자 그럼 직접 디버깅을 걸어 보도록 하겠습니다.

 

 

StringBuilder를 디버깅하려면 System.dll에 기호가 로드 되어 있어야 됩니다.

 

기호를 로드하게 되면 최초에 아래와 같은 확인 창이 나타나게 됩니다.

 

 

최초 한번만 나타나고 그 다음에는 나타나지 않습니다. *_*;;

 

 

보안 경고 메시지가 나타나는데 dll을 처음 로드 할때마다 실행됩니다. *_*;;

 

 

예.. 저는 연결하였습니다.

 

 

이렇게 디버깅이 가능합니다.

어떻게 보면 소스를 확인하는 것 밖에 되지 않습니다.

헌데 어떤 식으로  코드가 짜여져 있는지 확인 할 수 있으니 참 좋은 것 같습니다.

 

좀 더 열심히 공부해야겠군요 *_*;;

그리고 최적화된 코드를 앞으로는 짤 수 있을 듯 한데.. ㅋㅋ