阅读:3714回复:6
windbg+VMware调试ddk自带的portio,下了断点,却中断不了?系统环境 本机是 windows XP SP2,目标机用的是虚拟机,装的系统是 windows XP SP2 都是干净的系统! 调试环境配置 最新版windbg+ddk(3970-10086),办公电脑部能上外网,所以使用的是MS上的XP SP2的符号文件,windbg中符号文件路径的如下: C:\Windows\Symbols\;srv*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols;E:\WINDDK\3790.1830\src\general\portio\sys\objchk_wxp_x86\i386;srv* 符号文件说明下: 1.C:\Windows\Symbols\是下载的符号文件本机路径 2.E:\WINDDK\3790.1830\src\general\portio\sys\objchk_wxp_x86\i386这个是编译DDK中的portio的私人符号文件路径,中间那段是服务器路径,由于电脑不能上外网,所以肯定是没用处的! 下面是windbg+VMware调试过程! Microsoft (R) Windows Debugger Version 6.11.0001.404 X86 Copyright (c) Microsoft Corporation. All rights reserved. Opened \\.\pipe\com_1 Waiting to reconnect... Connected to Windows XP 2600 x86 compatible target at (Thu Jun 18 09:53:08.132 2009 (GMT+8)), ptr64 FALSE Kernel Debugger connection established. (Initial Breakpoint requested) Symbol search path is: C:\Windows\Symbols\;srv*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols Executable search path is: Windows XP Kernel Version 2600 UP Free x86 compatible Built by: 2600.xpsp_sp2_rtm.040803-2158 Machine Name: Kernel base = 0x804d8000 PsLoadedModuleList = 0x805541a0 System Uptime: not available Opened log file 'dbgeng.log' Break instruction exception - code 80000003 (first chance) ******************************************************************************* * * * You are seeing this message because you pressed either * * CTRL+C (if you run kd.exe) or, * * CTRL+BREAK (if you run WinDBG), * * on your debugger machine's keyboard. * * * * THIS IS NOT A BUG OR A SYSTEM CRASH * * * * If you did not intend to break into the debugger, press the "g" key, then * * press the "Enter" key now. This message might immediately reappear. If it * * does, press "g" and "Enter" again. * * * ******************************************************************************* nt!RtlpBreakWithStatusInstruction: 80527da8 cc int 3 这一段表示windbg已经成功的连接上了目标系统,也没有出现报错没有找到符号文件,以前虚拟机用番茄的系统的时候,在连接虚拟机的这一步的时候就会报错符号文件找不到,现在改了个干净的SP2系统,没有出现报错信息,应该是说我系统的符号文件是正确的?不知道这样理解是正确的不?不正确希望指出,谢谢! 下一步调试: kd> bu portio!DriverEntry kd> bl 0 eu 0001 (0001) (portio!DriverEntry) kd> g PortIo:IRP_MN_QUERY_DEVICE_RELATIONS PortIo:IRP_MN_QUERY_REMOVE_DEVICE PortIo:IRP_MN_REMOVE_DEVICE PortIo:Waiting for outstanding requests PortIo:unload PortIo:Entered Driver Entry PortIo:Entered AddDevice: 8162CDF8 PortIo:AddDevice: 816144C0 to 8162CDF8->8162CDF8 PortIo:IRP_MN_????? PortIo:IRP_MN_FILTER_RESOURCE_REQUIREMENTS PortIo:IRP_MN_QUERY_INTERFACE PortIo:IRP_MN_START_DEVICE PortIo:Resource Translated Port: (300) Length: (4) PortIo:IRP_MN_QUERY_CAPABILITIES PortIo:IRP_MN_QUERY_PNP_DEVICE_STATE PortIo:IRP_MN_QUERY_DEVICE_RELATIONS 这是在成功连接上目标机之后,我对portio的DriverEntry下了一个延时断点,显示断点应该是下成功了吧!然后我在目标机里面动态的加载了一次portio驱动,然后g命令之后,却显示没有中断到目标机!不知道是什么原因,是不是断点没下成功?试了几次都没成功,只能这里寻求些达人的帮助了,上面的解释应该蛮清楚了,本人刚刚接触驱动开发,希望好心人抽空帮忙看下!万分感谢! |
|
|
沙发#
发布于:2009-06-18 17:19
半天了,怎么没一个兄弟帮忙看下呢。。。。
|
|
|
板凳#
发布于:2009-06-21 21:41
你得保证你运行时符号加载成功
|
|
|
地板#
发布于:2009-06-22 21:14
感动啊,谢谢ZNSOFT的回复,我被WINDBG征服了,在同事电脑上都可以搞定,就我的不行!!
顺便问下,portio的那个基地址怎么确定?应用程序写一个端口,但是却写不进数据进去,那个write的派遣例程里面写基地址+端口的基地址怎么确定啊?好像没怎么讲清楚,不知道理解了没? |
|
|
地下室#
发布于:2009-08-18 18:26
回 3楼(starl1985) 的帖子
PortIo:Resource Translated Port: (300) Length: (4),^^ Base Address to check your install inf file if you want change the base address |
|
5楼#
发布于:2009-09-30 14:10
其实你也不必用bu来设置断点,你直接在portio的driverentry里写上DbgBreakPoint()。另你可以用ms提供的srvinstw.exe安装驱动,方法详见楚狂人的寒江独钓。
|
|
6楼#
发布于:2010-03-02 20:01
windbg+VMware能详细点不
我不知道如何看啊 |
|