Microsoft MVP성태의 닷넷 이야기
디버깅 기술: 5.12. CCP를 이용한 Windows Source Code 수준의 디버깅 [링크 복사], [링크+제목 복사],
조회: 27523
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기
(연관된 글이 2개 있습니다.)
10. CCP를 이용한 Windows Source Code 수준의 디버깅

사실, 이 부분은 .NET 개발자보다는 VC++ 개발자들에게 솔깃한 내용일 것 같습니다. ^^
예전에 제가 한번 소개를 드렸었지요.

Code Center Premium integration into Visual Studio

만약, 여러분이 Microsoft의 MVP에 선발되신 분이라면 CCP(Code Center Premium)에 신청할 수 있는 자격이 이미 있는 것입니다.
MVP 웹 사이트에 자세한 설명이 있으니 그것을 참고하셔서 CCP 신청을 하면 보안을 위한 Smart Card를 받을 수 있습니다.
CCP 자격은 MVP 자격이 유효한 경우에만 가능하기 때문에, MVP 재선출에 실패한 경우에는 자동으로 CCP 자격도 상실하게 됩니다.

음... 이런 딱딱한 이야기는 그만 두고 그냥 간단한 예를 한번 들어볼까요? ^^

	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	::MessageBox( NULL, L"TEST", L"QWER", MB_OK );

위와 같은 코드를 C++로 작성한 경우, 기존에는 MessageBox 내부의 코드는 볼 수가 없었습니다. 당연하겠지요 ^^ 소스 코드가 없으니. (물론, assembly 수준의 진입은 가능하지만.)

하지만, CCP 소스 코드에 대한 설정을 하고 나면, MessageBox 코드에서 "F11" 키를 누르는 경우 CCP 웹 사이트에서 소스 파일을 가져와서 그 안으로 디버깅이 진입하게 됩니다. 우와~~~~ ^^ 대단하지요. 좀 더 자세하게 소스 코드 레벨 디버깅까지 하는 모습을 보여드리고 싶지만, 아쉽게도 NDA 서명에 의해 그러한 부분을 보여드릴 수가 없어서 안타깝습니다.

저 같은 경우, 운영 체제가 Windows 2003 R2인데요. 쩝... ^^ 실제로 해보니, 소스 코드 라인 정보까지 맞지는 않아서 실제 MessageBox 함수 코드의 근처에서 BP가 헤매는 현상이 있었습니다.
그래도 ^^ 어쨌든 대단한 가능성이 열린 것 같아서 개인적으로 매우 흥미로웠습니다.



이번 회는 NDA 계약 사항에 의해 더 이상 보여드릴 수가 없군요. ^^ 어쨌든, 중요한 것은 Microsoft가 이미 디버깅 시에 PDB 파일과 함께 소스 코드에 대한 연동 방법을 제공해 주고 있다는 점인데요. 여러분들도 이러한 소스 코드에 대한 연동 방법을 제공할 수 있도록 Microsoft는 "Debugging Tools for Windows"에 Source Server 관련한 기능을 포함해서 배포해 주고 있습니다.

그럼, 다음 회에는 "Source Server"에 대해서 알아 봐야 할 차례이군요. ^^




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






[최초 등록일: ]
[최종 수정일: 7/10/2021]

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

비밀번호

댓글 작성자
 




... 136  137  138  139  140  141  142  143  144  145  146  147  148  149  [150]  ...
NoWriterDateCnt.TitleFile(s)
1303정성태6/26/201227398개발 환경 구성: 152. sysnet DB를 SQL Azure 데이터베이스로 마이그레이션
1302정성태6/25/201229419개발 환경 구성: 151. Azure 웹 사이트에 사용자 도메인 네임 연결하는 방법
1301정성태6/20/201225764오류 유형: 156. KB2667402 윈도우 업데이트 실패 및 마이크로소프트 Answers 웹 사이트 대응
1300정성태6/20/201231771.NET Framework: 329. C# - Rabin-Miller 소수 생성방법을 이용하여 RSACryptoServiceProvider의 개인키를 직접 채워보자 [1]파일 다운로드2
1299정성태6/18/201232884제니퍼 .NET: 21. 제니퍼 닷넷 - Ninject DI 프레임워크의 성능 분석 [2]파일 다운로드2
1298정성태6/14/201234405VS.NET IDE: 72. Visual Studio에서 pfx 파일로 서명한 경우, 암호는 어디에 저장될까? [2]
1297정성태6/12/201231052VC++: 63. 다른 프로세스에 환경 변수 설정하는 방법파일 다운로드1
1296정성태6/5/201227679.NET Framework: 328. 해당 DLL이 Managed인지 / Unmanaged인지 확인하는 방법 - 두 번째 이야기 [4]파일 다운로드1
1295정성태6/5/201225081.NET Framework: 327. RSAParameters와 System.Numerics.BigInteger 이야기파일 다운로드1
1294정성태5/27/201248526.NET Framework: 326. 유니코드와 한글 - 유니코드와 닷넷을 이용한 한글 처리 [7]파일 다운로드2
1293정성태5/24/201229773.NET Framework: 325. System.Drawing.Bitmap 데이터를 Parallel.For로 처리하는 방법 [2]파일 다운로드1
1292정성태5/24/201223754.NET Framework: 324. First-chance exception에 대해 조건에 따라 디버거가 멈추게 할 수는 없을까? [1]파일 다운로드1
1291정성태5/23/201230275VC++: 62. 배열 초기화를 위한 기계어 코드 확인 [2]
1290정성태5/18/201235080.NET Framework: 323. 관리자 권한이 필요한 작업을 COM+에 대행 [7]파일 다운로드1
1289정성태5/17/201239239.NET Framework: 322. regsvcs.exe로 어셈블리 등록 시 시스템 변경 사항 [5]파일 다운로드2
1288정성태5/17/201226462.NET Framework: 321. regasm.exe로 어셈블리 등록 시 시스템 변경 사항 (3) - Type Library파일 다운로드1
1287정성태5/17/201229299.NET Framework: 320. regasm.exe로 어셈블리 등록 시 시스템 변경 사항 (2) - .NET 4.0 + .NET 2.0 [2]
1286정성태5/17/201238219.NET Framework: 319. regasm.exe로 어셈블리 등록 시 시스템 변경 사항 (1) - .NET 2.0 + x86/x64/AnyCPU [5]
1285정성태5/16/201233264.NET Framework: 318. gacutil.exe로 어셈블리 등록 시 시스템 변경 사항파일 다운로드1
1284정성태5/15/201225695오류 유형: 155. Windows Phone 연결 상태에서 DRIVER POWER STATE FAILURE 블루 스크린 뜨는 현상
1283정성태5/12/201233307.NET Framework: 317. C# 관점에서의 Observer 패턴 구현 [1]파일 다운로드1
1282정성태5/12/201226105Phone: 6. Windows Phone 7 Silverlight에서 Google Map 사용하는 방법 [3]파일 다운로드1
1281정성태5/9/201233188.NET Framework: 316. WPF/Silverlight의 그래픽 단위와 Anti-aliasing 처리를 이해하자 [1]파일 다운로드1
1280정성태5/9/201226155오류 유형: 154. Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, ...'.
1279정성태5/9/201224918.NET Framework: 315. 해당 DLL이 Managed인지 / Unmanaged인지 확인하는 방법 [1]파일 다운로드1
1278정성태5/8/201226146오류 유형: 153. Visual Studio 디버깅 - Unable to break execution. This process is not currently executing the type of code that you selected to debug.
... 136  137  138  139  140  141  142  143  144  145  146  147  148  149  [150]  ...