zoukankan      html  css  js  c++  java
  • DbgView 无法开启Capture Kernel问题

    转载自 : http://www.cnblogs.com/jiaochen/p/5581440.html

    虽然不是自己调查的,但是验证了作者的分析,确实是重启后可以继续使用。

    dbgview 在windows 10 中关闭后再次打开时无法“capture kernel”
    
    
    DbgView 是一个免费的用于抓取log 的工具,可以捕获并输出OutputDebugString()函数的输出,以及输出windows driver 中dbgprint 的log,对于windows driver 开发和调试是十分有帮助的。
    
    但是该tool 已经很久不再更新了,最新的版本是V4.81 版本,是久远的2012年12月份release 出来的,具体下载链接为:
    
    https://technet.microsoft.com/en-us/sysinternals/debugview.aspx?f=255&MSPPError=-2147217396
    
     
    
    目前Dbgview.exe 使用在Windows 10 下,会有一个小问题:
    
    开启“capture kernel” 后运行一次dbgview后关闭该AP,并再次打开时通常会无法再“capture kernel”。提示的error 如下图:
    
    
    
    这样会导致DbgView 无法"Capture Kernel",除非重新启动PC。这样非常不方便。
    
     
    
    在研究DbgView与“Dbgv.sys” 时发现有几个要点:
    
    1. Dbgview.exe 在启动时,会在该exe中找到对应的resource,然后将这部分生成一个“Dbgv.sys”放在系统目录下,然后启动该sys。
    
    2. 启动成功后就会去delete 该“Dbgv.sys”文件。所以正常在win7 等系统中是无法看到“Dbgv.sys”这个文件的。
    
    3. 当第二次运行dbgview 时,同样会提取出“Dbgv.sys”,并重写之前的文件(如果文件存在的话)。
    
    4. 但是在win 10 中在步骤2总delete 这个文件时会失败;而且在步骤3中进行重写时也是失败的。猜测Windows 10 是禁止重写已经运行了的sys文件。
    
    5. 在overwrite 失败后,dbgview 认为不能正确运行“Dbgv.sys”,所以弹出上文的error message。
    
    6. DbgView 在运行“Dbgv.sys” 时是创建并start 一个service “DBGVSVC”,但是比较奇怪的是在系统中并没发现该service。
    
     
    
    根据上述的分析,产生一些策略去尝试避免文中所说的问题:
    
    1. 在再次打开DbgView 前,尝试找到“DBGVSVC” service,并stop service 后再运行DbgView,但是没能找到“DBGVSVC” Service,该策略未生效;
    
    2. 在再次打开DbgView 前,尝试去删除“Dbgv.sys” 文件,然后再运行DbgView,但是该文件未能找到有效的方法成功删除,该策略未生效;
    
    3. 偶然发现“Dbgv.sys” 竟然可以重命名,重命名该文件后再运行DbgView 就OK了。但是该方法的缺陷是需要重启后删除重命名后的文件,否则该文件会一直存在。这个方法对于不想使用我修改后的dbgview 的用户来说,非常友善。
    
    4. 反编译DbgView 后,将dbgview 中重写“Dbgv.sys” 失败后的代码改写,就可以在windows 10 中继续像在以前OS 中开心的玩耍了。修改后的FakeDbgView.exe 可以在https://pan.baidu.com/s/1o8TbqjC 下载。该版本是基于V4.81 版本 版本进行修改。
    
    笑语欢歌水云间, 谈古论今郁作烟。 人存一世数十载, 生则壮志冲九天!
  • 相关阅读:
    java.sql.SQLException: 数据大小超出此类型的最大值
    日志收集系统 ELK
    centos下mysql 数据库安装、调试
    Log4j应用
    使用webuploader实现大文件断点续传(前端部分)
    es6学习 -- 解构赋值
    es6学习 -- let和const
    关于禁止页面滚动的实践(禁止滚轮事件)
    匿名函数与闭包
    JS高级学习总结--面向对象
  • 原文地址:https://www.cnblogs.com/mercedes-Benz/p/7985196.html
Copyright © 2011-2022 走看看