关于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 ...
随机推荐
- Python 基础 格式化输出
Python 基础 格式化输出 现在需要我们录入我们身边好友的信息,格式如下: ------------ info of Alex Li ---------- Name : Alex Li Age : ...
- stone [期望]
也许更好的阅读体验 \(\mathcal{Description}\) 有 \(n\) 堆石子,依次编号为 \(1, 2,\ldots , n\),其中第 \(i\) 堆有 \(a_i\) 颗石子 你 ...
- CapsLock Enhancement via AutoHotKey
上次写了一篇博文,讲如何通过AutoHotKey改造CaspLock,使其成为一个方便的编辑按键,并特意给出了设计的思路方便参考. 见地址:http://www.cnblogs.com/Vonng/p ...
- git 学习笔记 --Bug分支
软件开发中,bug就像家常便饭一样.有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除. 当你接到一个修复一 ...
- Ambari深入学习(I)-系统架构
Ambari是hadoop分布式集群配置管理工具,是由hortonworks主导的开源项目.它已经成为apache基金会的孵化器项目,已经成为hadoop运维系统中的得力助手,引起了业界和学术界的关注 ...
- Sqlserver 总结(2) 存储过程
目录 写在前面 什么是存储过程 存储过程的优点 存储过程的分类 1.只返回单一记录集的存储过程 2.没有输入输出的存储过程 3.有返回值的存储过程 4.有输入参数和输出参数的存储过程 5.同时具有返回 ...
- NEST 自定义分析器
public void SetAnalysis() { if (!client.IndexExists("employee").Exists) { client.CreateInd ...
- win10 bcdedit testsigning
win10 bcdedit testsigning # 禁用系统完整性检查和禁用驱动签名以及进入测试签名驱动模式> bcdedit.exe /set nointegritychecks on & ...
- A Deep Dive Into Draggable and DragTarget in Flutter
https://medium.com/flutter-community/a-deep-dive-into-draggable-and-dragtarget-in-flutter-487919f6f1 ...
- 1.live555源码分析----RSTPServer创建过程分析
最近五一回家,终于有机会能安静的看一下流媒体这方面相关的知识,准备分析live555的源码,接下来会把我读源码的过程记录成博客,以供其他的同路人参考. 因为再读源码的过程中,并不是一路顺着读下来,往往 ...