2016-11-10 20:25:26 +00:00
|
|
|
## Class: Debugger
|
|
|
|
|
|
|
|
> An alternate transport for Chrome's remote debugging protocol.
|
|
|
|
|
2016-11-23 19:20:56 +00:00
|
|
|
Process: [Main](../glossary.md#main-process)
|
2016-11-10 20:25:26 +00:00
|
|
|
|
|
|
|
Chrome Developer Tools has a [special binding][rdp] available at JavaScript
|
|
|
|
runtime that allows interacting with pages and instrumenting them.
|
|
|
|
|
|
|
|
```javascript
|
2018-09-13 16:10:51 +00:00
|
|
|
const { BrowserWindow } = require('electron')
|
2020-07-09 17:18:49 +00:00
|
|
|
const win = new BrowserWindow()
|
2016-11-10 20:25:26 +00:00
|
|
|
|
|
|
|
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')
|
|
|
|
```
|
|
|
|
|
2019-05-06 15:29:01 +00:00
|
|
|
### Instance Events
|
|
|
|
|
|
|
|
#### Event: 'detach'
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
* `event` Event
|
|
|
|
* `reason` String - Reason for detaching debugger.
|
|
|
|
|
|
|
|
Emitted when the debugging session is terminated. This happens either when
|
|
|
|
`webContents` is closed or devtools is invoked for the attached `webContents`.
|
|
|
|
|
|
|
|
#### Event: 'message'
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
* `event` Event
|
|
|
|
* `method` String - Method name.
|
2019-10-14 05:32:11 +00:00
|
|
|
* `params` any - Event parameters defined by the 'parameters'
|
2019-05-06 15:29:01 +00:00
|
|
|
attribute in the remote debugging protocol.
|
2020-07-02 20:04:20 +00:00
|
|
|
* `sessionId` String - Unique identifier of attached debugging session,
|
|
|
|
will match the value sent from `debugger.sendCommand`.
|
2019-05-06 15:29:01 +00:00
|
|
|
|
|
|
|
Emitted whenever the debugging target issues an instrumentation event.
|
|
|
|
|
|
|
|
[rdp]: https://chromedevtools.github.io/devtools-protocol/
|
|
|
|
[`webContents.findInPage`]: web-contents.md#contentsfindinpagetext-options
|
|
|
|
|
2016-11-10 20:25:26 +00:00
|
|
|
### Instance Methods
|
|
|
|
|
|
|
|
#### `debugger.attach([protocolVersion])`
|
|
|
|
|
|
|
|
* `protocolVersion` String (optional) - Requested debugging protocol version.
|
|
|
|
|
|
|
|
Attaches the debugger to the `webContents`.
|
|
|
|
|
|
|
|
#### `debugger.isAttached()`
|
|
|
|
|
|
|
|
Returns `Boolean` - Whether a debugger is attached to the `webContents`.
|
|
|
|
|
|
|
|
#### `debugger.detach()`
|
|
|
|
|
|
|
|
Detaches the debugger from the `webContents`.
|
|
|
|
|
2020-07-02 20:04:20 +00:00
|
|
|
#### `debugger.sendCommand(method[, commandParams, sessionId])`
|
2019-02-13 17:23:53 +00:00
|
|
|
|
|
|
|
* `method` String - Method name, should be one of the methods defined by the
|
|
|
|
[remote debugging protocol][rdp].
|
2019-08-05 17:45:58 +00:00
|
|
|
* `commandParams` any (optional) - JSON object with request parameters.
|
2020-07-02 20:04:20 +00:00
|
|
|
* `sessionId` String (optional) - send command to the target with associated
|
|
|
|
debugging session id. The initial value can be obtained by sending
|
|
|
|
[Target.attachToTarget][attachToTarget] message.
|
|
|
|
|
|
|
|
[attachToTarget]: https://chromedevtools.github.io/devtools-protocol/tot/Target/#method-attachToTarget
|
2019-02-13 17:23:53 +00:00
|
|
|
|
|
|
|
Returns `Promise<any>` - A promise that resolves with the response defined by
|
|
|
|
the 'returns' attribute of the command description in the remote debugging protocol
|
|
|
|
or is rejected indicating the failure of the command.
|
|
|
|
|
|
|
|
Send given command to the debugging target.
|