2011-01-19 3 views
13

디버깅시 en_windows_7_checked_build_dvd_x86_398742 디버그 정보가 표시되지 않습니다. 내 추적 정보 (ATLTRACE)조차도 볼 수 없습니다. 반대쪽 Windows XP Checked는 매력처럼 작동합니다. Windows 7에서 "Bad QueryIdType : 5"메시지가 디버그 세션에 시작됩니다. 커널 디버그가 올바르게 설정되었습니다. 도와주세요 ...커널 추적 Windows 7 WinDbg

답변

13

확인 결과는 here입니다. 사람들을 도울 수 있습니다 :

문제 : Windows Vista에서 드라이버를 실행할 때 DbgPrint 또는 KdPrint 메시지가 WinDbg (또는 KD)에 나타나지 않습니다.

이유는 무엇입니까? Vista는 DbgPrint와 친구들을 DbgPrintEx에 자동 매핑합니다. 이제 DbgPrintEx를 사용하면 함수 호출의 구성 요소 이름과 수준 및 레지스트리 또는 메모리의 관련 필터 마스크를 통해 메시지를 필터링하여 메시지를 커널 디버거로 보낼 조건을 제어 할 수 있습니다.

Vista에서는 DbgPrint 및 KdPrint가 구성 요소 "DPFLTR_DEFAULT_ID"및 수준 "DPFLTR_INFO_LEVEL"에 매핑됩니다. 물론 Vista에서는 xxx_INFO_LEVEL 출력이 기본적으로 사용되지 않습니다. 따라서 기본적으로 DbgPrint/KdPrint는 커널 디버거로 보내지지 않습니다.

문제를 해결하는 방법은 무엇입니까? 두 가지 선택 :

  • HKLM\SYSTEM\CurrentControlSet\Session Manager\Debug Print Filter --open 기본적으로 DbgPrint/KdPrint 메시지의 출력을 활성화합니다. 이 키 아래에 이름이 DEFAULT 인 값을 만듭니다. xxx_INFO_LEVEL 출력과 xxx_ERROR_LEVEL 출력을 사용하려면이 키의 값을 DWORD 값 8과 같게 설정하십시오. 또는 마스크를 0xF로 설정하여 모든 출력을 얻으십시오. 이러한 변경 사항을 적용하려면 재부팅해야합니다.

  • 특별히 구성 요소 필터 마스트를 DPFLTR으로 변경하십시오. 초기 버전의 Vista/LH에서는 DWORD의 마스크 값을 Kd_DPFLTR_MASK ("ed Kd_DPFLTR_MASK")으로 지정하여 기본 인쇄물 마스크를 변경했습니다. Build 5308 (Vista의 February CTP)에서는 마스크 변수가 변경되어 DWORD의 마스크 값을 Kd_DEFAULT_MASK ("ed Kd_DEFAULT_MASK")으로 설정해야합니다 (두 가지 경우 모두 DPFLTR_INFO_LEVEL 출력을 사용하려면 8을 지정하십시오). DPFLTR_ERROR_LEVEL 출력, 또는 0xF입니다 출력의 모든 레벨을 얻을 수

을 경로를 따라 (읽기 및 필터 디버깅 메시지에 대한 WDK 문서를 참조하십시오. 드라이버 개발 도구는 드라이버에 디버깅 코드를 사용하여 \ 드라이버를 디버깅하기위한 도구 \ \ Debugging Code Overview) DbgPrintEx/KdPrintEx 사용에 대한 자세한 내용을 보거나 DbgPrintEx의 Debugging Tools For Windows 설명서 (부록 A)를 참조하십시오.

15

나는 창문에, WinDBG에서 내에서 7 32 비트를 해결할 수 있었다 : MSDN 문서에 따르면

ed Kd_DEFAULT_Mask 8 

, 당신은 또한 레지스트리를 사용할 수 있지만, 내용을 적용하려면 다시 부팅해야합니다. 8 값을 가진 이라는 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter 아래에 DWORD 키를 만듭니다.

날짜 마이크로 소프트 문서까지 여기에 있습니다 : http://msdn.microsoft.com/en-us/library/windows/hardware/ff551519(v=vs.85).aspx

1

기본적으로 DbgPrint/KdPrint 메시지의 출력을 가능하게하는 레지스트리 경로는 "컨트롤 \ 세션 관리자 \ 디버그 인쇄 필터 \ CURRENTCONTROLSET \ HKEY_LOCAL_MACHINE을 \ 시스템은" 세션 관리자는 Control 아래에 있지 않습니다. 기본값 normaly는 0xf입니다. 모든 메시지가 가능합니다. 당신은 비주얼 스튜디오 2015 또는 2017을 경우 이 정보가 https://docs.microsoft.com/de-de/windows-hardware/drivers/devtest/reading-and-filtering-debugging-messages#identifying-the-component-name

에있는 귀하의 요구에 더 잘 맞는 비트 마스크를 설정하려면 표준 구성은 기본적으로이 플래그를 설정하지 않습니다. 예제로 작업을 시작할 때 디버그 타겟에서이 여분을 설정하는 것을 잊지 마십시오.

이렇게 Windbg를 사용하는 Windows 10 환경에서 도움이되었습니다.

에코 예를 들어 총알에서 https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debug-universal-drivers---step-by-step-lab--echo-kernel-mode-#install

에 설명 된 것처럼 두 번째 문제는 "내장 드라이버 파일을 찾아 7"윈도우 10에 devcon 명령을 사용하던 디버그 - 대상에 필요한 드라이버 파일을 transfering과 것은 devcon 명령으로 그들을로드 . Windows 10을 사용하면 catalog-File도 복사해야합니다. 그렇지 않으면 설명대로 devcon.exe가 실패합니다. 그 이유는 테스트 인증서도 설치해야하기 때문입니다. 이 작업은 일반적으로 Visual Studio 2015/2017로 디버깅 환경을 준비 할 때 수행됩니다. 그냥 certmgr로 다시 확인하십시오.