◆WDK编译驱动错误: (xxx.obj): Error LNK2026: module unsafe for SAFESEH image.
当我们用WDK编译驱动代码时,在链接时有可能遇到上述错误。原因可能使用的模块,如静态库的编译并没有使用SAFESEH,导致当前工程无法生成正常的SAFESEH。我们可以禁用SAFESEH机制来解决该Error,只需在source文件中,加入NO_SAFESEH = 1即可。
◆Win7下 DebugView使用,需设置下注册表才能监视核心:
HKLM/SYSTEM/CurrentControlSet/Control/Session Manager,打开或者创建子项Debug Print Filter,新建一个DWORD值DEFAULT,将其设置成0xF,重启即可。
【Debug & Analyze】
◆无法打开Win8 dump 文件
Win8 生成的dump文件,无法用Windbg 6.12.0002.633打开,提示“参数不正确”(Win32 error 0n87. The parameter is incorrect)。原因是Windbg版本低,要用最新适用于Win8的版本才行。无奈ms现在不提供Windbg单独下载,只作为WDK和SDK一部分,那就使用sdk下载工具sdksetup.exe,只选Windbg来下载吧,不过速度是很慢的!
另,WinDBG有两套版本号,一套是与NT内核一致的,比如6.2代表Win8,另一套是自己的,比如6.12. Win8的比6.12要新,相当于6.13+
http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/9768e33d-3f84-4ce4-9a25-269c1e048d9a
◆分析Dump文件:
如果你Assembly不熟的話,建議你讀他的另一本書,就會了解Assembly在Windows上如何運作
Windows Debugging: Practical Foundations
http://www.dumpanalysis.org/blog/index.php/2008/06/20/windows-debugging-practical-foundations/
Note 這本書寫的淺顯易懂,且小小一本
如果你熟assembly就直接從Volume 1開始讀即可
摘自评论:http://blog.miniasp.com/post/2008/05/18/Use-WinDbg-Analysis-and-Solve-Program-Hang-Problem.aspx
--------------------------------------------------------------------------------------------------------------------------
◆善用Verifier.exe工具的4 个特性来查找设备驱动程序的Bug,提高程序的健壮性:
●特殊内存池(Special Pool)
●内存池跟踪(Pool tracking)
●强制IRQL检测(Force IRQL Checking)
●低资源模拟(Low Resources Simulation)
【应用点滴】
◆CreateMapingFile 返回1006:
使用CreateFile打开的文件句柄传给CreateMapingFile,但CreateMapingFile一直返回1006错误。好一通查啊,结果原来是传入CreateFile的文件名称不对,应该是“ABC.exe”,而我只写了一个“ABC”,倒~!具体细节,待仔细研究~