阅读:2335回复:3
今天小试了一下 softice 的源代码调试.
.
. 接手了同事的一个驱动程序. 同事已经离职. 是公司内部使用的一块 isa 板卡. 在 p4 的机器上正常(当时是在 p4 的机器上开发的), 现在放到 p3 的机器上发现有问题了. 症状是安装驱动重起之后, 系统停在 win2000 进系统的滚动条的某个位置. 以前没有玩过驱动. 只是前一阵子心血来潮看了一点 DDK 的帮助文件. 首先进入 recovery console 把驱动对应的服务停了. 重起后进入了系统. 将 softice 设置成 boot 启动模式. 用 symbol loader 将 sys 翻译成 nms, 翻译之前有一个选项要选上. 好像是 package source with symbol table. 如图. 这样在翻译完成的时候, loader 会向你询问一些源文件的位置. 我想应该是我的 source seach path 没有设置好. 不过不管那么多. 再设置 softice initialization 中的 symbols, 添加刚刚翻译好的 nms 文件. 这样在 softice 加载的时候就会自动的加载这个 nms 文件了. 重新启用驱动的服务. 重起系统. 在提示进行 driverstudio boottime config 的时候按 ESC, 选择 Stop softice on load. 这样做的目的是让 softice 一加载就停下来. 回车继续. 过了一会儿. softice 如约而至. 先查看一下是否正确的加载了 nms 文件: sym 列出了我的驱动里面的所有符号. 正常. 这个时候我的驱动还没有加载. 正好加断点: bpx mydriver::driverentry go! 等了一会儿就停在了我的 driverentry 里面. 一路 F10. 没有出现问题. 继续 go. 在 OnStartDevice 里面, 我发现了一个问题. 我一调用 KInterrupt::Connect(), 驱动立马就在 MyDriver::Isr() 断点了. 继续 go, 发现系统一直在调用我的 isr(). 实在是很奇怪. 正是因为系统一直调用这个 isr(), 导致了系统启动时挂起. 现在正为这个一筹莫展, 难道是板卡和主板的兼容性问题?? 以上的一些 softice 设置步骤都是从 driverstudio 随机文档 using softice 里面看来的. 后来我又试了一下 softice 的双机调试. 很简单. 我用的是串口线连接. 先找一根交叉串口线, 将两台机器连接起来. 用超级终端测试一下看是不是连通了. 确认正确之后, 在 target 机器上, 设置 softice 使用 COM1, 波特率 115200, 重起. 同样设置 Stop softice on load. softice 加载停住之后. 在 host 机器上运行: siremote com1 115200 立即就看到和 target 上同样的界面. 不过现在这个是在一个窗口当中. 然后, 就可以在 host 机器上用鼠标, 键盘来调试 target 机器了. 不过没有什么太大的用处. 只是尝个新鲜. 有空了打算试试 visual softice 的双机调试. 那个的界面就强大很多了. 就说这么多把. 语文从来都不好. 大家看着可能会有些累. 将就着吧. |
|
最新喜欢:hxqw20... |
沙发#
发布于:2009-01-15 16:31
谢谢共享
|
|
板凳#
发布于:2009-01-16 10:05
softice 调试驱动程序用的 ??
|
|
地板#
发布于:2009-03-03 21:41
你是在系统启动时就开始调试了,用的什么版本的softice
|
|
|