调试器的控制台交互前端
ConsoleDebuggerFrontend
00 Remarks
这个类型是 DebuggerContext 之上的一个默认的交互实现, 其通过订阅 DebuggerContext.OnBreakpointHit 事件的方式 来与调试器的内核进行交互. 因为调试器的内核之中并不包含任何的 控制台相关的代码, 所以GUI的宿主程序也可以采用完全相同的方式来 实现自己的调试界面
01 Syntax
SMRUCC.Rsharp.Interpreter.ConsoleDebuggerFrontend
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| Attach | 1 | 将当前的这个控制台前端挂载至调试器之上 |
| Detach | 1 | 将当前的这个控制台前端从调试器之上卸载掉 |
| OnPause | 1 | 断点命中的事件处理程序 |
| processCommand | 1 | 处理用户所输入的一条调试命令 |
| printSource | 1 | 展示当前所执行到的位置附近的源代码内容 |
| processEvaluate | 1 | 在当前的暂停点之上对用户所输入的表达式进行求值 |
| processBreakCommand | 1 | 处理断点的设置命令 |
| processDeleteCommand | 1 | 处理断点的删除命令 |
| parseLocation | 1 | 解析[文件名:]行号形式的源代码位置描述字符串 |
03 Fields
| Name | Overloads | Summary |
|---|---|---|
| sourceCache | 1 | 用于展示当前所执行到的源代码行的源文件内容缓存 |
04 Members
Attach
将当前的这个控制台前端挂载至调试器之上
Detach
将当前的这个控制台前端从调试器之上卸载掉
OnPause(DebugFrame)
断点命中的事件处理程序
Remarks
这个函数是在被暂停的执行线程之上被同步调用的, 在这个函数返回了之后, 执行线程会继续阻塞在 DebuggerContext.Pause() 之中, 直到用户所输入的命令调用了 DebuggerContext.Resume() 为止
processCommand(
String, DebugFrame)处理用户所输入的一条调试命令
Returns
返回True表示程序应该继续执行下去(即需要退出命令循环), 返回False则表示应该继续等待用户输入下一条命令
printSource(DebugFrame,
Int32)展示当前所执行到的位置附近的源代码内容
processEvaluate(
String, DebugFrame)在当前的暂停点之上对用户所输入的表达式进行求值
processBreakCommand(
String, DebugFrame)处理断点的设置命令
Remarks
命令的语法为break [文件名:]行号 [if 条件表达式], 当文件名被省略掉了的时候则默认使用当前所暂停的位置所处的文件
processDeleteCommand(
String, DebugFrame)处理断点的删除命令
解析[文件名:]行号形式的源代码位置描述字符串
sourceCache
用于展示当前所执行到的源代码行的源文件内容缓存