Debugging Tools for Windows |
sx* 命令用来控制被调试的程序发生某个异常或特定事件时,调试器要采取的动作。
sx{e|d|i|n} [-c "Cmd1"] [-c2 "Cmd2"] [-h] {Exception|Event|*}
sx- [-c "Cmd1"] [-c2 "Cmd2"] {Exception|Event|*}
sxr
模式 | 用户模式、内核模式 |
目标 | 仅活动调试 |
平台 | 所有 |
sx 命令显示当前进程的异常列表和所有非异常的事件列表,并且显示调试器遇到每个异常和事件时的行为。
sxe、sxd、sxn和sxi 命令控制调试器针对每个异常和事件的设置。
sxr 命令将所有异常和事件过滤器的状态重设为默认值。命令被清除、中断和继续选项被重设为默认值,等等。
sx- 命令不改变指定异常或事件的处理状态和中断状态。该命令在希望修改第一次处理机会命令或第二次处理机会命令,而不想修改其他任何东西的时候很有用。
如果包含-h 选项(或指定cc、 hc、bpec或ssec事件),sxe、sxd、sxn和 sxi 命令控制异常或事件的处理状态。在所有其它情况下,这些命令都控制异常或事件的中断状态。
设置中断状态时,这些命令有以下作用。
命令 | 状态名 | 说明 |
---|---|---|
sxe | Break (Enabled) |
当发生该异常时,在任何错误处理器被激活之前目标立即中断到调试器中。这种处理类型称为第一次处理机会。 |
sxd | Second chance break (Disabled) |
发生该类异常时,调试器不会在第一次处理机会时中断(虽然会显示信息)。如果其他错误处理器没有处理掉该异常,执行会停止下来并中断到调试器。这种处理类型称为第二次处理机会。 |
sxn | Output (Notify) |
当该异常发生时,目标程序不中断到调试器中。但是,会通过一条消息提示发生了异常。 |
sxi | Ignore | 异常发生时,目标程序不中断到调试器,并且不会显示信息。 |
设置处理状态时,这些命令有以下作用:
命令 | 状态名 | 说明 |
---|---|---|
sxe | Handled | 执行返回时,事件被标识为已处理。 |
sxd, sxn, sxi |
Not Handled | 执行返回时,事件被标识为未处理。 |
只有异常可以使用-h 选项,而事件不可以。将该选项和ch、 bpe或sse一起使用来分别设置 hc、 bpec或ssec的处理状态。如果将-h 和其他任何事件一起使用,不会有任何效果。
和hc、bpec或ssec一起使用-c 或-c2 选项可以将指定命令分别和ch、bpe或sse关联起来。
下面的例子中,sxe 命令用来设置针对访问违例的第一次处理机会的中断状态,并且设置在第一次处理机会时执行r eax命令。sx- 命令用来将第一次处理机会命令改变为r ebx,而不会改变处理状态。最后,显示了一部分sx的输出,指明了访问违例事件的当前设置:
0:000> sx- -c "r ebx" av
0:000> sx
av - Access violation - break - not handled
Command: "r ebx"
. . .
关于中断状态和处理状态的更多信息、事件代码的说明、所有事件的默认状态列表、以及控制该状态的其他方法,查看控制异常和事件。