跳转至

调试器

类:Debugger

Chrome 远程调试协议的另一种传输方式。

进程:主进程
此类未从 'electron' 模块导出。它仅可作为 Electron API 中其他方法的返回值使用。

Chrome Developer Tools 在 JavaScript 运行时提供了一个特殊绑定,可用于与页面交互并对页面进行插桩。

const { BrowserWindow } = require('electron')

const win = new BrowserWindow()

try {
  win.webContents.debugger.attach('1.1')
} catch (err) {
  console.log('Debugger attach failed : ', err)
}

win.webContents.debugger.on('detach', (event, reason) => {
  console.log('Debugger detached due to : ', reason)
})

win.webContents.debugger.on('message', (event, method, params) => {
  if (method === 'Network.requestWillBeSent') {
    if (params.request.url === 'https://www.github.com') {
      win.webContents.debugger.detach()
    }
  }
})

win.webContents.debugger.sendCommand('Network.enable')

实例事件

事件:'detach'

返回值:

  • event Event
  • reason string - 分离调试器的原因。

当调试会话终止时触发。当 webContents 关闭,或针对已附加的 webContents 调用 DevTools 时,会发生这种情况。

事件:'message'

返回值:

  • event Event
  • method string - 方法名称。
  • params any - 由远程调试协议中 'parameters' 属性定义的事件参数。
  • sessionId string - 已附加调试会话的唯一标识符, 将与从 debugger.sendCommand 发送的值匹配。

每当调试目标发出插桩事件时触发。

实例方法

debugger.attach([protocolVersion])

  • protocolVersion string(可选)- 请求的调试协议版本。

将调试器附加到 webContents。

debugger.isAttached()

返回 boolean - 是否有调试器已附加到 webContents。

debugger.detach()

将调试器从 webContents 分离。

debugger.sendCommand(method[, commandParams, sessionId])

  • method string - 方法名称,应为远程调试协议 中定义的方法之一。
  • commandParams any(可选)- 包含请求参数的 JSON 对象。
  • sessionId string(可选)- 向具有关联调试会话 id 的目标发送命令。初始值可通过发送 Target.attachToTarget 消息获得。

返回 Promise<any> - 一个 Promise,其以远程调试协议中命令描述的 'returns' 属性定义的响应解析,或在命令失败时拒绝。

向调试目标发送给定命令。

[!NOTE] * 如果在目标导航之前调用 sendCommand(例如在 attach() 之后立即调用),返回的 Promise 可能直到导航发生后才解析。 * 如果命令的响应没有 result 数据(如该命令在远程调试协议中的条目所定义),Promise 将解析为空对象({}),而不是 null 或 undefined。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron