2/03/2009

Windbg 팁: 커널 디버깅시 유저 모드 심볼 로딩


Windbg로 리모트 커널 디버깅시 ".process" 명령을 이용하여 프로세스 컨텍스트를 바꿀 수 있다는 것은 모두 알 것이다. 그런데 가끔 ".process"로 해당 프로세스의 "page directory"를 사용하도록 설정하여도 콜스택이 제대로 안나오는 경우가 있다. 그 것은 유저 모드 영역에 대한 심볼을 로드하지 못해서 그렇다. 그 경우 ".reload /user"라고 명령을 수행해도 되고, 바로 .process 사용시에 ".process /p /r <EPROCESS>"로 명령을 줘도 된다. 단 유저 모드 바이너리에 대해서는 심볼 파일에 대한 체크섬을 하지 않는 것 같으므로 정확한 심볼 패쓰를 넣어 줘야 제대로 로딩이 된다. 많이 쓰지는 않는 기능이라서 자꾸 까먹어서 기록해 본다.
 
/p Translates all transition page table entries (PTEs) for this process to physical addresses before access, if you use /p and Process is nonzero. This translation might cause slowdowns, because the debugger must find the physical addresses for all of the memory that this process uses. Also, the debugger might have to transfer a significant amount of data across the debug cable. (This behavior is the same as .cache forcedecodeuser.)

If you include the /p option and Process is zero or you omit it, the translation is disabled. (This behavior is the same as .cache noforcedecodeptes.)

/r Reloads user-mode symbols after the process context has been set, if you use the /r and /p options. (This behavior is the same as .reload /user.)

Posted via email from bugtruck's posterous

댓글 없음:

댓글 쓰기