约有 1,303 项符合查询结果, 以下是第 69 - 131项。
费时 < 1 秒。
首先需要分清楚,Passthru是个被调试的驱动程序,WinDBG是个调试器;所以你的问题应该是如何让WinDBG可以接收到驱动打印的调试信息吧?
第一个条件是需要建立内核调试会话。
第二个条件是,要把内核的调试信息输出开关打开,即ed nt!Kd_Default_Mask 0xff
第三个条件是在驱动中输出调试信息,也就是调用DngPrint函数,其实Passthru驱动中已经有一些信息输出语句。
Posted in C/C++本地代码调试
by
格蠹老雷
on 2010-05-17
是的,如果设了这个标志,再让多个线程同时使用这个堆,那么是有问题的。
Posted in Windows内核
by
格蠹老雷
on 2010-05-17
简单来说,同步异常就是语言本身定义的异常,对于C++和.Net,就是throw关键字抛出的异常。此外的就是异步异常,主要也就是CPU一级的异常,你(二楼)列出的0xC0000005,0xC0000094都是后一种。
Posted in 《软件调试》答疑
by
格蠹老雷
on 2010-05-17
可以用一些“设计模式”,比如堆句柄只在有限的范围内可见,在这个有限的范围内,所有操作是序列化的(防止重入的)。
或者使用自己维护的同步对象...
Posted in Windows内核
by
格蠹老雷
on 2010-05-11
单独把这两句话拿出来,看起来是有些不妥当。但在Windows中,进程包含线程;因此第一句是从任务调度的(微观)角度来讲,第二句是从宏观的角度来讲。举个生活中的例子,假设有人问:“下周一的任务是什么”,我们可能说,“下周一的任务是上班”;但对于同样的问题,我们的回答也可能是,“下周一的任务是调试XXBUG”。
把这两对概念放在一起:
上班 - > 调试BUG
进程 -> 线程
他们的确不等价,前者包含后者,就看说的有多细致(深入到哪一层)。
多谢反馈,下一版时会考虑改进,以免误解。
Posted in 《软件调试》勘误和意见
by
格蠹老雷
on 2010-05-09
请问Windows系统的版本是什么?建议你用双机内核调试看一下,如果遇到困难,把困难或者失败点的信息描述的更详细一些,或者粘贴一些调试信息过来。
Posted in 《软件调试》的示例程序
by
格蠹老雷
on 2010-05-08
这里的“每个”不够准确,的确如你所说,不是所有函数都会加_chkesp,对与ESP绝对不会被破坏的情况,编译器就没有必要再加这个检查,这有点像基于Cookie的溢出检查,是根据需要来加的,编译器内部有一个简单的判断规则。
多谢你的反馈。
Posted in 《软件调试》答疑
by
格蠹老雷
on 2010-05-01
有点误会 :-),原文中的FPO信息是指符号文件中的信息:
“WinDBG可以在符号文件中搜索到这个函数的FPO信息,... 根据FPO信息,...”
也就是下图中第2行的信息:
(可以使用SymView工具打开release目录下的localvar.pdb得到上图)
书中缺少上面这幅插图,出现0x62这个值的确有些突兀。下一版会改进,多谢反馈。
Posted in 《软件调试》答疑
by
格蠹老雷
on 2010-04-29