关于Windows系统里的事后调试
- 如果用户模式调试器当前附加到错误进程,则所有错误都将导致目标进入此调试器。
只要附加了用户模式调试器,就不会使用其他错误处理方法—即使使用了gn(Go With Exception Not Handled)命令。 - 如果没有附加用户模式调试器,并且正在执行的代码有自己的异常处理例程(例如,try-except),则此异常处理例程将尝试处理错误。
- 如果没有附加任何用户模式调试器,但Windows具有打开的内核调试连接,并且错误是断点中断,则Windows将尝试联系内核调试器。
在Windows启动过程中必须打开内核调试连接。如果使用的是Windows Server 2003或更高版本的Windows,并且希望防止用户模式中断闯入内核调试器,则可以将KDbgCtrl实用程序与-du参数一起使用。如果Windows确实尝试联系内核调试器,但连接的另一端没有运行调试器,则Windows将冻结,直到激活内核调试器。在内核调试器中,可以使用gh(gowithexceptionhandled)忽略错误并继续运行目标。您可以使用gn(Go With Exception Not Handled)绕过内核调试器并继续执行步骤4。 - 如果步骤1、2和3中的条件不适用,Windows将激活调试工具。在这种情况下,可以预先选择任何程序作为工具。所选程序称为后期调试器。这也被称为即时调试器或JIT调试器。
如果后期调试器是标准的用户模式调试器(如CDB、WinDbg或Microsoft Visual Studio),则此调试器将启动并进入应用程序。如果后期调试器是用于写入转储文件的工具(如Dr.Watson),则将创建内存转储文件,然后终止应用程序。
- 若要将后期调试器更改为WinDbg,请运行WinDbg-I(I必须大写)。使用此命令后,将显示成功或失败消息。当WinDbg是后期调试器时,它将在应用程序崩溃时被激活。
- 要将后期调试器更改为CDB,请运行CDB-iae或CDB-iaec键字符串。。使用-iaec开关时,key
string指定要添加到AeDebug注册表项末尾的字符串。此命令成功时不显示任何消息,但失败时将显示失败消息。当CDB是后期调试器时,它将在应用程序崩溃时被激活。 - 要将后期调试器更改为NTSD,请运行NTSD-iae或NTSD-iaec键字符串。。使用-iaec开关时,key string指定要添加到AeDebug注册表项末尾的字符串。如果键字符串包含空格,则必须用引号括起来。此命令成功时不显示任何消息,但失败时将显示失败消息。当NTSD是后期调试器时,它将在应用程序崩溃时被激活。
- 要将后期调试器更改回Dr.Watson,请运行drwtsn32-i。当Dr.Watson是后期调试器时,如果应用程序崩溃,内存转储文件将写入磁盘。
- 64位的存储在\\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug
- 32位存储在\\HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug。但是,如果此键中的调试器值指定了%windir%\system32目录中的应用程序,则Windows将改为在%windir%\syswow64中查找。
- Debugger
此REG_SZ值指定将处理后期调试的调试器。必须列出调试器的完整路径,除非调试器位于默认路径中的目录中。 - Auto
此REG_SZ值始终为0或1。如果Auto设置为0,则在后期调试之前将显示一个消息框。
- 如果Debugger的值是一个有效调试器或者是Dr.Watson,消息框会有"OK"和“Cancel”两个按钮,点击OK,应用程序将终止,点击Cancel调试器将启动。
- 如果Debugger为空,消息框只有一个OK按钮,且不会启动调试
- 如果Debugger的值是一个有效调试器或者是Dr.Watson,消息框会有"Send Error Report"、“Don't Send”和“Debug”三个按钮,如果按下“Don't Send”按钮,则应用程序将终止。如果按下“Send Error Report”按钮,将向Microsoft发送一个小型转储文件,应用程序将终止。如果按下“Debug”按钮,将启动调试器值中指定的工具。(请注意,当“自动”值不等于0时,所有这些按钮的效果都与Dr.Watson的消息窗口上的按钮不同。)
- 如果Debugger为空,消息框只有"Send Error Report"和“Don't Send”按钮
Auto = 1
Auto = 1
Auto = 1
关于Windows系统里的事后调试的更多相关文章
- 全网最详细的Windows系统里Oracle 11g R2 Client(64bit)的下载与安装(图文详解)
不多说,直接上干货! 环境: windows10系统(64位) 最好先安装jre或jdk(此软件用来打开oracle自带的可视化操作界面,不装也没关系:可以安装plsql,或者直接用命令行操作) Or ...
- 全网最详细的Windows系统里Oracle 11g R2 Client客户端(64bit)安装后的初步使用(图文详解)
不多说,直接上干货! 前期博客 全网最详细的Windows系统里Oracle 11g R2 Client(64bit)的下载与安装(图文详解) 命令行方式测试安装是否成功 1) 打开服务(cmd— ...
- 全网最详细的Windows系统里Oracle 11g R2 Database(64bit)安装后的初步使用(图文详解)
不多说,直接上干货! 前期博客 全网最详细的Windows系统里Oracle 11g R2 Database(64bit)的下载与安装(图文详解) 命令行方式测试安装是否成功 1) 打开服务(cm ...
- 全网最详细的Windows系统里Oracle 11g R2 Database(64bit)的完全卸载(图文详解)
不多说,直接上干货! 前期博客 全网最详细的Windows系统里Oracle 11g R2 Database(64bit)的下载与安装(图文详解) 若你不想用了,则可安全卸载. 完全卸载Oracle ...
- 全网最详细的Windows系统里Oracle 11g R2 Database服务器端(64bit)的下载与安装(图文详解)
不多说,直接上干货! 环境: windows10系统(64位) 最好先安装jre或jdk(此软件用来打开oracle自带的可视化操作界面,不装也没关系:可以安装plsql,或者直接用命令行操作) Or ...
- 全网最详细的Windows系统里PLSQL Developer 64bit安装之后的一些配置(图文详解)
不多说,直接上干货! 注意的是: 本地若没有安装Oracle服务端,Oracle server服务端64位,是远程连接,因此本地配置PLSQL Developer64位. PLSQL Develope ...
- 全网最详细的Windows系统里PLSQL Developer 32bit的下载与安装过程(图文详解)
不多说,直接上干货! 注意的是: 本地若没有安装Oracle服务端,Oracle server服务端32位,是远程连接,因此本地配置PLSQL Developer32位. PLSQL Develope ...
- 全网最详细的Windows系统里PLSQL Developer 64bit的下载与安装过程(图文详解)
不多说,直接上干货! ORACLE是数据库,有客户端和服务器: 其,具体下载,可见http://www.oracle.com/technetwork/database/enterprise-editi ...
- windows系统里Cygwin中如何正确安装wget(图文详解)
具体步骤,见如下: https://ftp.gnu.org/gnu/wget/ 解压到Cygwin的主目录中,一般是 你的Cygwin目录/home/当前用户名/ . 我这是如下 先./c ...
随机推荐
- [动图演示]Redis 持久化 RDB/AOF 详解与实践【华为云技术分享】
Redis 是一个开源( BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.它支持的数据类型很丰富,如字符串.链表.集 合.以及散列等,并且还支持多种排序功能. 什么叫持 ...
- 在windows服务中使用定时器
在windows服务中,利用winform中直接拖动timer控件的方式使用定时器是不可以的,启动服务后会发现定时器并没有执行.那么在windows服务中如何使用定时器呢? 不使用直接拖动控件的方式 ...
- 2019 拼多多java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.拼多多等公司offer,岗位是Java后端开发,最终选择去了拼多多. 面试了很多家公司,感觉大部分公司考察的点都差 ...
- P2472 [SCOI2007]蜥蜴 (最大流)
题目 P2472 [SCOI2007]蜥蜴 解析 这个题思路比较清晰,本(qi)来(shi)以(jiu)为(shi)无脑建图跑最大流,结果挂了,整了一个小时后重新建图才过的. 建立一个超级源点和一个超 ...
- 闭锁CountDownLatch与栅栏CyclicBarrier
https://blog.csdn.net/lmc_wy/article/details/7866863 闭锁CountDownLatch与栅栏CyclicBarrier 浅谈 java ...
- 学习vue生命周期
首先,每个Vue实例在被创建之前都要经过一系列的初始化过程,这个过程就是vue的生命周期.首先看一张图吧~这是官方文档上的图片相信大家一定都会很熟悉: 可以看到在vue一整个的生命周期中会有很多钩子函 ...
- CSS疑难杂症
1.text-align: center + letter-spacing: 2em 字体不居中 办法:添加text-indent: 2em 2.first-child伪类选择不到元素 办法:确保备选 ...
- [LeetCode] 198. 打家劫舍 ☆(动态规划)
描述 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定一个 ...
- c# 将两个表的有效数据合到一个表中
<asp:DropDownList ID="ddlSpecialty" runat="server" > </asp:DropDownList ...
- ubuntu16.04部署vsftpd
问题描述: 之前在centos6/7可以快速构建vsftpd服务,在ubuntu上频繁出错.最后发现是vsftpd版本比较新(新增安全特性导致的) 问题解决: 加上对应参数即可解决问题 window资 ...