gn, gN (Go with Exception Not Handled)
gn和gN
命令继续给定线程的执行,但是不将异常标记为已处理。这样使得应用程序的异常处理器可以处理该异常。
语法
用户模式语法
[~Thread] gn[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
[~Thread] gN[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
内核模式语法
gn[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
gN[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
参数
- Thread
- (仅用户模式) 指定要执行的线程。该线程必须是因为异常而停止下来的。语法的详细信息,查看线程语法。
- a
- 使得任何用该命令创建的断点成为处理器断点(就像用ba创建的一样)
,而不是软断点(像用bp和 bm创建的一样)。如果没有指定BreakAddress,则不会创建断点并且a标志无效。
- StartAddress
- 指定要开始执行的地址。如果没有指定,调试器将执行传递给指令计数器的当前值所指向的地址。语法的详细信息,查看地址和地址范围语法。
- BreakAddress
- 指定断点的地址。如果设置了BreakAddres,它必须是一个指令地址(即该地址必须是某条指令第一个字节的地址)。一次可以以任意顺序设置最多10个断点地址。如果BreakAddress
还未能确定,它将被作为未定断点保存起来。语法的详细信息,查看地址和地址范围语法。
- BreakCommands
- 指定当遇到BreakAddress 设置的断点时要自动执行的命令。BreakCommands
参数必须以一个分号开头。如果指定了多个BreakAddress值,BreakCommands 会应用到每一个上。
注意 BreakCommands 参数仅在将它包含在另一个命令的命令字符串中时可用 —
例如,在另一条断点命令或一个异常或事件设置中。在一个命令行中,分号会结束该命令,并且分号之后的所有附加命令会在gn 或gN完成之后立即执行。
环境
| 模式 |
用户模式、内核模式 |
| 目标 |
仅活动调试 |
| 平台 |
所有 |
注释
如果调试器不是在一个断点上停下来的,gn 和gN
的作用相同。如果调试器是在断点上停下来的,则gn无效;必须
使用大写的"N"才能执行该命令。这是一个安全性上的预防措施,因为极少会在不处理断点的情况下继续执行的。
如果使用BreakAddress 参数来设置断点,该断点只会在当前线程触发。其他线程执行到指定的代码位置时不会停止下来。
如果指定了Thread ,gn 命令将指定线程解冻并冻结其他所有线程然后再执行。例如,如果使用~123gn、~#gn或~*gn命令,指定线程会是解冻的,而其他所有线程都被冻结。
附加信息
关于其他执行该命令的方法和相关命令的概述,查看控制调试目标。
Build machine: CAPEBUILD