1  在DriverEntry一开始便加入KdBreakPoint();  
        查看MSDN中说KdBreakPoint在checked环境(即debug环境下)下会被编译,在free环境(即release环境下) 下不会被编译。KdBreakPoint is identical to the DbgBreakPoint routine in code that is compiled in a checked build environment. It has no effect if compiled in a free build environment.现在我用vs2008按照说明配置了环境,并且进行编译,此时如何确定KdBreakPoint是否被编译呢?2  windbg中设置符号链接
         在windbg的Symbol File Path中设置“srv*c\symbols*http://msdl.microsoft.com/download/symbols”,那么当第一次下载成功后便会在c盘的根目录下备份。那么当我再此调试时此处仍然这样设置难道还要重新下载吗?因为我上午做测试时曾成功的下载,然后我在c盘的symbols文件夹下看到很多pdb文件。而刚才再次进行调试时windbg报很多sys无法加载并且符号链接表无法成功加载。此时我再去看c盘的symbols文件夹发现其中只有一个pdb文件,此时我的网络状况很不好,难道此时又重新下载把原来的覆盖了?3  内核符号表
        不管写什么驱动程序,内核符号表只需要一份和本机系统配套的就好了吧?也就是说我自己下载了跟本机配套的符号表,然后安装了。接下来在此机器上不管我调试哪个驱动程序,关于内核符号表我只需要指定先前安装的就好了,是吗?4  还是关于内核符号表
        假定现在有机器A,B.我在A上写代码并编译,我在B上装了VM + windbg。现在我把在A上编译好的sys文件和相应的pdb文件拷贝到B上,如果此时想在B上用windbg进行调试的话,此时的内核符号表应该用哪一份呢?是和A配套的符号表还是和B配套的符号表,还是不管和谁配套的此时均不能进行调试?

解决方案 »

  1.   

    1. 使用 debugger 插個斷, 或者是 disassembler (如 HIEW) 也可啊.....2. 清空了 symbols, 應該是不會的. 是不是 VMWare 把硬碟還原了呢? 注意有沒有把硬碟關機時把變更都 persist. 還有 symbol path 好像沒有了 : ?  LZ 是下達 .symfix c:\symbols 還是 .symfix c\symbols 呢?3. 嗯. 只怕內核被更新了, 符號不對. 最好也是用 Microsoft 的 online symbol store.4. 內核符號表還內核符號表, 軀動符號表還軀動符號表.
      

  2.   

    非常感谢您的解释,我明白了许多。第二条是.symfix c:\symbols ,打的时候少了:,非常抱歉。
    还是想再听些大牛的指点……
      

  3.   

    为什么你这么喜欢到网上实时下符号包?你装个微软提供的Retailed包,以后就不再需要下载符号包了,很全的。Symbols路径直接就写个本地路径就行了
      

  4.   

    下載全包再加實時符號包便萬無一失矣.個人經驗, 在分析 kernel dump 時符號雖然同屬一個 service pack, 可是當中就是有些 hotfix 沒有最新符號. 這樣會弄至內核符號不對, stack trace 混亂了.