Windbg - Breakpoint 0's offset expression evaluation failed.
이상하군요, 분명히 bp를 올바르게 설정했는데,
kd> bp sampledrv!DriverEntry
Bp expression 'sampledrv!DriverEntry' could not be resolved, adding deferred bp
kd> bl
0 e Disable Clear u 0001 (0001) (sampledrv!DriverEntry)
kd> g
막상 BP에 해당하는 함수가 호출되었을 때 Windbg로 진입은 했지만 다음과 같은 식의 오류 메시지와 함께 엉뚱하게 "nt!DebugService2" 함수에서 멈춰 있습니다.
Breakpoint 0's offset expression evaluation failed.
Check for invalid symbols or bad syntax.
WaitForEvent failed
nt!DebugService2+0x6:
fffff803`29dfefc6 c3 ret
검색해 봐도 딱히 적당한 답변이 없는데요, 이거저거 해보다가 "C/C++" / "Code Generation"의
"Spectre Mitigation" 옵션을 "Enabled (/Qspectre)"가 아닌 "Disabled"로 설정하니까 해결되었습니다.
참고로 또 다른 PC에서 상이한 SDK/WDK로 테스트했을 때는 저 옵션에 관계없이 잘 동작했습니다.
빌드 문제 하나 더 얹어 보자면. ^^
특정 PC에서 Device Driver 프로젝트를 빌드하니 이런 오류가 발생합니다.
Error MSB4018 The "SignTask" task failed unexpectedly.
System.Security.Cryptography.CryptographicException: Access is denied.
검색해 보면 이런 글이 나오는데요,
MSBuild error MSB4018 The "SignTask" task failed unexpectedly. In VS2015
; https://stackoverflow.com/questions/36223909/msbuild-error-msb4018the-signtask-task-failed-unexpectedly-in-vs2015
아마도, SignTask 중에 인증서 등록 시 권한 문제가 발생한 듯합니다. 그래서 그냥 Visual Studio를 관리자 권한으로 한 번 실행해 프로젝트를 빌드해주면, 이후 일반 권한으로도 빌드가 잘됩니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]