나는 최근에 윈도우 드라이버 개발을 시작했다. 나는 그것이 어떻게 실제로 내 드라이버를 디버그하는지 궁금하다. 내가 가진 설정은 - Win7을 호스트로, XP를 게스트로 VM웨어에, 그리고 직렬 포트를 통해 디버깅을하고 있습니다. WinDbg은 어떻게 작동합니까?
내가 수행 한 연구
는 :은 내가 얘기하고 매우 몇 가지를 말에만 this 링크를 발견했다.
이미 단일 OS에서 디버거가 작동하는 방식을 알고 있습니다.이 경우 디버거도 동일한 OS에 있으므로 어떤 프로세스가 실행 중인지 알 수 있습니다. 그것은 이해할 수 있습니다. 하지만 여기서 디버거는 완전히 다른 OS, 완전히 다른 환경에 있습니다. 나는 단지 file->open source files
라고 말하면서 중단 점을 넣을 수있다 !! 또한 드라이버를로드 할 때 실제로 거기에서 깨집니다. 내 말은 왜 ../어떻게? 어떻게 XP의 커널은 (커널에 대한 확장, 적어도 WDM, WDK에 대해 알지 못하는) this
드라이버의 소스 코드가 있다는 것을 알게 되나요? 그것도 통제 (환경) 밖에서? 나는 그 안에 breakpoint로 열리는 10 개의 파일을 가질 수 있다는 것을 의미한다. 그러나 그것은 아름답게 작동한다. 나는 그것을 실패하거나 속일 수 없다.
Win7에서 windbg에 소스를 추가 할 때마다 소스에서 바이너리가 생성되고 XP가 바이너리를로드 할 때마다 windbg가 대기중인 바이너리인지 확인합니다. 에 대한. 위의 링크에서 혼란스러운 것은 Vikrant가 디버거가 커널 (XP)에게 프로세스를 디버그 할 의향이 있는지 묻습니다 -> Bus HELLO ... 프로세스가 XP에서 실행 중이고 Winb가 Win7에서 실행 중이고 name or id
을 알지 못합니다. 방법. 소스 코드가 있지만, 300 개의 파일로 구성된 드라이버가 있고, 가장 간단한 파일이 windbg에서 열리는 경우를 고려하십시오.이 소스 코드가 실행되는 드라이버의 소스 코드와 어떻게 일치합니까?
당신은 엘리트일지도 모르지만 당신이 투표를 거절한다면 당신의 생각으로 저를 계몽하십시오. 이 침묵이 나를 죽인다.: D –
이 책을 읽으십시오. https://blogs.msdn.microsoft.com/microsoft_press/2012/05/31/new-book-inside-windows-debugging/ – Yijinsei