Recent Posts
Recent Comments
Link
관리 메뉴

NaggingMachine

MDbg + MDbg GUI 설치하기 본문

TechnoBabbler

MDbg + MDbg GUI 설치하기

naggingmachine 2006. 8. 21. 00:26
오늘 처음으로 [wp]MDbg[/wp]와 MDbg GUI를 설치해 보았습니다. 그런데, 설치 과정에서 많은 어려움이 따르더군요. 그래서 여러 가지 주의할 사항들을 적어보겠습니다. 꼭 순서대로 하세요.



제가 다음의 순서대로 작업을 하여 빌드가 성공한 프로젝트는 여기에서 다운로드 하실 수 있습니다.



1. MDbg 다운로드



우선 다음 링크에서 MDbg를 다운로드 할 수 있습니다.



관련 블로그: http://blogs.msdn.com/jmstall/archive/2004/09/30/236281.aspx

다운로드 링크: 여기



MDbg를 다운로드 한 후 적절한 폴더에 압축을 풉니다. 저의 경우엔 D:\MDBG라는 폴더를 만들어서 해당 폴더에 압축을 풀었습니다. 따라서 실제로 소스가 있는 위치는 D:\MDBG\MDBG가 되겠습니다.



2. 솔루션 열기



D:\MDBG\MDBG 폴더(앞으로 솔루션 폴더라고 하겠습니다)에 있는 MDBG.sln 파일을 더블 클릭하거나 Visual Studio 2005의 File | Open | Project/Solution 메뉴를 선택하여 MDBG.sln 파일을 엽니다.



처음 솔루션 파일을 열고 프로젝트를 빌드하면 굉장히 많은 빌드 오류가 발생합니다. 따라서 바로 빌드를 하지 마시고, 다음 단계에서 소개하는 대로 실행하여 오류를 해결하도록 합니다.



3. corapi2 빌드 오류 해결하기



corapi2 빌드 오류를 해결하지 않으면, NativeApi 오류가 굉장히 많이 발생합니다. 프로젝트 창을 열고 Build Events 탭에서 Post-Build event command line: 부분을 보시면, ilasm 링크에 문제가 있음을 알 수 있습니다(절대 경로의 문제). 따라서 ilasm 파일이 있는 곳을 정확하게 지정해 주셔야 합니다.



C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm /KEY=../mdbg.snk /DLL /DEBUG /OUT="$(TargetDir)corapi2.dll" context.il cordblib.il corpublib.il cormetalib.il assemblyDef.il



위에서 빨간색으로 굵게 표시된 부분을 수정해야 합니다.



4. mdbg 빌드 오류 해결하기



mdbg 역시 빌드 오류가 발생하는데, 마찬가지로 파일의 정확한 위치를 찾지 못하기 때문에 발생하는 오류입니다. 따라서 적절한 경로를 수정해 주면 됩니다. 하지만 저 같은 경우엔 경로를 다음과 같이 현재 솔루션 폴더에서 해당 파일을 참조하도록 하고, 대신 SDK의 bin 폴더에 있는 ResGen.exe 파일을 솔루션 폴더에 복사하였습니다. 그리고 다음과 같이 프로젝트 창을 열고 Build Events 탭에서 Pre-Build event command line: 부분을 수정해주어야 합니다.



$(SolutionDir)ResGen $(ProjectDir)mdbgCommands.txt



5. 빌드 및 실행



이와 같이 프로젝트의 옵션을 설정하고 빌드를 수행하면 오류가 발생하지 않을 것입니다. 만약 오류가 발생한다면 mdbg build error 페이지를 참고하세요.



빌드 오류가 발생하지 않았다면, mdbg 프로젝트를 시작 프로젝트로 설정한 후, 프로젝트를 시작하도록 합니다. 다음과 같이 콘솔 창이 실행되고 help 명령을 실행하여 제대로 작동하면 mdbg를 사용하기 위한 준비가 완전히 끝났다고 보시면 됩니다.









6. MDbg GUI 다운로드



관련 블로그: http://blogs.msdn.com/jmstall/archive/2005/02/04/367506.aspx

다운로드 링크: 여기



기본적으로 MDbg의 GUI라는 프로젝트가 MDBG 솔루션에 추가되어 있지만, 최근의 GUI 프로그램을 실행하기 위해서는 별도로 다운로드를 해야 합니다. 자동 압축 파일이기 때문에 D:\MDBG\MDBGUI 폴더를 만들어 해당 폴더에 압축을 풀도록 합니다. 그리고 설치후에 꼭 ReadMe 파일을 읽어보세요.





7. MDBG 솔루션에 추가하기



앞서 설명한 것처럼 MDBG 솔루션에 GUI 프로젝트가 있는데, 새로 다운로드한 GUI 프로젝트를 추가하기 위해서는 우선 기존의 프로젝트를 솔루션에서 제거하도록 합니다.







그리고 다운로드 받은 프로젝트(D:\MDBG\MDBGUI 폴더에 있음)를 솔루션에 추가합니다.



8. GUI 빌드 오류 수정하기



GUI 프로젝트 역시 빌드를 수행하면 오류가 발생합니다. 그 이유는 어셈블리 signing 문제인데요, MDBG.snk 파일의 경로를 잘못 인식하고 있기 때문입니다(현재 D:\mdbg.snk로 설정되어 있습니다). 따라서 gui 프로젝트에 있는 mdbg.snk 파일을 일단 삭제하고, D:\MDBG\mdbg 폴더에 있는 mdbg.snk 파일에 대한 링크를 추가합니다. 이 때 gui 프로젝트에서 Add | Existing Item 메뉴를 선택하여 mdbg.snk 파일을 추가할 때, 다음 그림과 같이 Add Link 버튼을 선택하여 링크를 추가하도록 합니다(그냥 추가하면 파일이 복사됩니다).



snk 파일을 추가한 다음, Project 설정 창의 Signing 탭에서 Choose a strong name key file: 의 경로를 ..\mdbg\mdbg.snk 로 변경합니다. 그리고 프로젝트 속성창의 Build 탭에서 Output 경로를 ..\mdbg\bin\Debug\로 바꾸어 주어야 새로운 GUI가 로드됩니다.



9. GUI 실행하기



앞선 단계에서 프로젝트를 설정한 후, 빌드가 성공하였다면, GUI를 실행하지 말고 MDBG를 실행합니다. GUI는 mdbg를 통해서 실행할 수 있습니다. mdbg를 실행하면 명령창이 뜨는데, 이 때 load gui 명령을 입력하면 다음 그림과 같이 gui 프로그램이 실행되는 것을 확인할 수 있습니다.



지금까지 MDBG와 MDBG GUI 프로젝트를 실행하는 방법에 대해서 살펴보았습니다. 보다 자세한 정보는 Mike Stall의 블로그를 참고하시기 바랍니다.

* 모든 과정이 프로젝트를 실행하는데, 매우 중요하기 때문에 어느 하나도 실수하거나 빠뜨려서는 안됩니다.

MDbg Linkfest

What is Mdbg and where can I get it?

Managed Debugger Sample (My first post on MDbg)

Download V2.0 MDbg?



Summary of the role of MDbg and Cordbg

We need your feedback on the fate of Cordbg.exe / BradA on killing Cordbg

Comparison of MDbg Sample vs. MDbg SDK (MDbg Sample is updated for Beta 2 and RTM)

MDbg + V1.1 (Everett / VS2003)

Problems for a managed debugger for v1.1?

Using metadata interfaces from managed code



MDbg + IronPython

Adding IronPython scripting engine to Mdbg

ShawnFa's IronPython-MDbg examples

How to embed IronPython script support in your existing app in 10 easy steps

Tools built on top of MDbg:

Sample app to attach to target app, dump callstacks of all threads, and detach.

Sample app to print loaded modules (in C#) .  (In VB)

Simple harness to print exceptions in an app

How to modify those tools to attach

Converting a managed PDB into a XML file.



MDbgGui + Threading

MDbg extension to debug IL,

Winforms + Mdbg threading issue

Source is available for MDbg Winforms GUI! (updates to the GUI)

Winforms gui on top of Managed debugger sample.

Other

Updating MDbg GUI for Beta 2

MDbg Sample temporarily broken in post-beta 2 builds.

Mdbgcore.dll and linking IL