将 Visual Studio 调试器附加到电子应用程序 [英] Attach visual studio debugger to electron app
问题描述
我正在尝试从 Visual Studio 2017(而不是 vscode)从头开始调试电子应用程序.
I'm attempting to debug electron app from visual studio 2017 (and not vscode) from scratch.
我创建了一个控制台 nodejs 项目,安装并保存电子.项目结构:
I created a console nodejs project, install and save electron. Project structure:
app.js
的内容(取自electron网站):
Content of app.js
(taken from website of electron):
'use strict';
const { app, BrowserWindow } = require('electron')
const path = require('path')
const url = require('url')
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let win
function createWindow() {
// Create the browser window.
win = new BrowserWindow({ width: 800, height: 600 })
// and load the index.html of the app.
win.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
}))
// Open the DevTools.
win.webContents.openDevTools()
// Emitted when the window is closed.
win.on('closed', () => {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
win = null
})
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow)
// Quit when all windows are closed.
app.on('window-all-closed', () => {
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (win === null) {
createWindow()
}
})
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.
和index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
We are using node
<script>document.write(process.versions.node)</script>,
Chrome
<script>document.write(process.versions.chrome)</script>,
and Electron
<script>document.write(process.versions.electron)</script>.
</body>
</html>
但是,当我单击开始时,电子应用程序会启动,但调试过程似乎会自行分离.当我尝试手动将调试器附加到所有电子进程(调试 -> 附加到进程 -> 选择所有电子进程)时,由于没有加载任何符号,因此断点声称不会被命中.
However, when I click start, the electron app starts, but the debugging process seems to detach itself. When I try to manually attach the debugger to all electron process (Debug -> Attach to process -> choose all electron processes), the break point claims not to be hit since no symbols are loaded.
这是项目属性页:
我错过了一个步骤吗?既然可以在VSCode上进行调试,那我假设在VS2017上也可以进行调试?
Is there a step that I missed? Since debugging can be done on VSCode, I assume it can also be done in VS2017?
非常感谢.
注意:我确实选中了 Suppress JIT optimization 并取消选中 Enable only my code.
NOTE: I did check Suppress JIT optimization and uncheck Enable just my code.
推荐答案
这其实很容易做到.
- 像这样在 Visual Studio 中配置您的应用:
- 启动您的应用.Electron 将在一个单独的终端上启动,但 Visual Studio 不会附加到它.
转到调试>附加到进程...并输入Webkit websocket连接类型和
Go to Debug > Attach to process... and enter the Webkit websocket connection type and http://127.0.0.1:5858 as the target.
您的断点现已启用.
这篇关于将 Visual Studio 调试器附加到电子应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!