2016-10-23 2 views
-1

커널 디버깅을 위해 Visual Studio를 사용하고 있습니다. 네, 모든 자습서에서 WinDbg를 사용한다고 말하고 있지만 Visual Studio는 실제로 커널 디버깅에 대해 훌륭합니다. 더 최근의 개발입니다.Visual Studio에서 커널 디버깅 : 조사 식 창 배열 길이

보기 윈도우에 포인터가있을 때 배열이라고 가정하면 목록에 여러 항목이 한꺼번에 드롭 다운으로 표시됩니다. 일반적으로 Visual Studio에서 포인터 뒤에 ", AMOUNT"를 추가하여 여러 항목을 가져 오지만 커널 디버깅 모드에서는 작동하지 않습니다.

이 옵션을 사용할 수 있습니까?

[편집] 요청에 따라 예제 이미지를 첨부했습니다. 조사 창에서 "ProcessPath"변수의 데이터에 여러 번 액세스하려고했습니다. 커널 모드 디버깅하는 동안

enter image description here

+0

VC++/VC 포인터와 같은 일반 앱의 디버깅에는 잘 작동한다는 의미입니까? 그렇습니다. 하나의 드라이브를 사용하여 간단한 샘플을 나에게 공유 할 수 있습니까? 조사 식 창에서 텍스트를 어떻게 입력 했습니까? 나에게 스크린 샷을 공유 할 수 있습니까? –

+0

사진을 첨부했습니다. – Dakusan

+0

도구 -> 옵션 -> 디버깅 아래의 "네이티브 호환 모드 사용"또는 "네이티브 호환 모드 사용"을 활성화합니까? 실제 커널 디버깅 전문가는 아니지만 디버깅보기 창에 영향을주는 두 가지 디버깅 옵션과 유사한 문제를 만난다. 여전히 도움이되지 않는다면 간단한 샘플을 공유하십시오. 따라서 환경을 설정하고이 문제를 재현 할 수 있습니다. –

답변

2

는 조사 식 창은 WinDBG에서의 식 계산기를 통해 작업이 나타납니다. 즉, WinDBG의 Watch 윈도우와 거의 동일하게 작동합니다. 따라서 귀하의 질문은 Visual Studio와 관련이 없지만 WinDBG의 시계로 귀결됩니다.

,amount 구문은 결과 amount을 보여주는 발생합니다 이유입니다 - WinDBG로하여 C++가하는 것처럼, "평가 및 폐기"등의 ,을 처리합니다. 이것은 또한 로컬 변수에 대한 WinDBG 구문 인 $!으로 변수를 추가하는 이유를 설명합니다.

WinDBG는 꽤 많은 C++ 구문을 지원하지만 불행히도 (char(*)[4])$!ProcessPath과 같은 C++ 캐스트 변환을 인식하지 못합니다 (단, VS 디버거에서 usermode 대상을 디버깅 할 때 작동합니다).

WinDBG에서 배열로 캐스트하는 단일 방법을 찾지 못했습니다.

ProcessPath[0] 
ProcessPath[1] 
ProcessPath[2] 
ProcessPath[3] 
ProcessPath[4] 
ProcessPath[5] 
ProcessPath[6] 
ProcessPath[7] 
ProcessPath[8] 
+0

답을 고맙게 생각합니다. 나는 이것에 대한 업보트를 줄 것이지만, 실제로 그것을 해결책으로 생각할 수는 없다. 50 점을 줄 수도 있습니다. 그렇지 않으면 사라질 것입니다. – Dakusan

관련 문제