sx、sxd、sxe、sxi、sxn、sxr、sx-(设置异常)

sx 命令控制调试器在正在调试的应用程序中发生异常或发生某些事件时执行的操作。

sx

sx{e|d|i|n} [-c "Cmd1"] [-c2 "Cmd2"] [-h] {Exception|Event|*}

sx- [-c "Cmd1"] [-c2 "Cmd2"] {Exception|Event|*}

sxr

参数

-c “Cmd1
指定在发生异常或事件时执行的命令。 当第一次出现处理此异常时,无论此异常是否进入调试器,都会执行此命令。 必须将 Cmd1 字符串括在引号中。 如果用分号分隔多个命令,则此字符串可以包含这些命令。 -c 和带引号的命令字符串之间的空格是可选的。

-c2“Cmd2
指定一个命令,该命令在发生异常或事件时执行,并且未在第一次发生时进行处理。 当第二次发生处理此异常时,无论此异常是否进入调试器,都会执行此命令。 必须将 Cmd2 字符串括在引号中。 如果用分号分隔多个命令,则此字符串可以包含这些命令。 -c2 和带引号的命令字符串之间的空格是可选的。

-h
更改指定事件的处理状态,而不是其中断状态。 如果 Eventcchcbpecssec,则无需使用 -h 选项。

Exception
指定命令在当前基数中作用的异常号。

事件
指定命令作用的事件。 这些事件由简短缩写标识。 有关事件的列表,请参阅 控制异常和事件

*
影响未以其他方式为 sx 显式命名的所有异常。 有关显式命名异常的列表,请参阅 控制异常和事件

环境

   
模式 用户模式、内核模式
目标 仅实时调试
平台 全部

其他信息

有关中断状态和处理状态、所有事件代码的说明、所有事件的默认状态列表以及控制此状态的其他方法的详细信息,请参阅 控制异常和事件

注解

sx 命令显示当前进程的异常列表和所有非异常事件的列表,并为每个异常和事件显示调试器的默认行为。

sxesxdsxnsxi 命令控制每个异常和事件的调试器设置。

sxr 命令将所有异常和事件筛选器状态重置为默认设置。 例如,命令被清除并中断,继续选项重置为其默认设置。

sx- 命令不会更改指定异常或事件的处理状态或中断状态。 如果要更改与特定事件关联的第一次机会命令或第二次机会命令,但不希望更改任何其他内容,可以使用此命令。

如果 (包含 -h 选项,或者) 指定 了 cchcbpecssec 事件,则 sxesxdsxnsxi 命令控制异常或事件的 处理状态 。 在所有其他情况下,这些命令控制异常或事件的 中断状态

设置中断状态时,这些命令具有以下效果:

命令 状态名称 说明
sxe 打破
已启用 ()
发生此异常时,目标会立即中断调试器,然后再激活任何其他错误处理程序。 这种处理称为 第一次机会 处理。
sxd 第二次机会休息
(已禁用)
尽管) 显示消息,但调试器不会中断此类型的第一次异常 (。 如果其他错误处理程序无法解决此异常,则执行将停止,目标会中断调试器。 这种处理称为 第二次机会 处理。
sxn 输出
(通知)
发生此异常时,目标应用程序根本不会中断调试器。 但是,将显示一条消息,通知用户此异常。
sxi 忽略 发生此异常时,目标应用程序根本不会中断调试器,并且不会显示任何消息。

设置处理状态时,这些命令将产生下列效果:

命令 状态名称 说明
sxe 已处理 恢复执行时,该事件被视为已处理。
sxd,sxn,sxi 未处理 恢复执行时,该事件被视为未处理。

可以将 -h 选项与异常(而不是事件)一起使用。 将此选项与 chbpesse 配合使用,分别设置 hcbpecssec 的处理状态。 如果将 -h 选项用于任何其他事件,则不起作用。

-c-c2 选项与 hcbpecssec 分别用于将指定的命令与 chbpesse 相关联。

在以下示例中, sxe 命令用于将访问冲突事件的中断状态设置为在第一次机会中断,并将在该点执行的 first-chance 命令设置为 r eax。 然后使用 sx- 命令将 first-chance 命令更改为 r ebx,而不更改处理状态。 最后,显示 sx 输出的一部分,指示访问冲突事件的当前设置:

0:000> sxe -c "r eax" av

0:000> sx- -c "r ebx" av

0:000> sx
 av - Access violation - break - not handled
       Command: "r ebx"
  . . .  

另请参阅