附加视觉工作室debugging器电子应用程序

我试图从Visual Studio 2017(而不是vscode)从头开始debugging电子应用程序。

我创build了一个控制台nodejs项目,安装和保存电子。 项目结构: 在这里输入图像描述

app.js内容(摘自电子网站):

 '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> 

然而,当我点击开始,电子应用程序启动,但debugging过程似乎分离自己。 当我尝试手动将debugging器附加到所有电subprocess(debugging – >附加到进程 – >select所有电subprocess)时,断点声称不会因为没有符号被加载而被击中。 在这里输入图像描述

这是项目属性页面: 在这里输入图像描述

有没有我错过了一个步骤? 由于debugging可以在VSCode上完成,我认为它也可以在VS2017中完成?

非常感谢。

注:我没有检查压制JIT优化,并取消选中只启用我的代码。

这其实很容易做到。

  1. 像这样在Visual Studio中configuration你的应用程序:

在这里输入图像描述

  1. 启动你的应用。 电子将开始在一个单独的terminal,但Visual Studio将不会附加到它。

在这里输入图像描述

  1. 转到Debug> Attach to process …并inputWebkit websocket连接types和http://127.0.0.1:5858作为目标。 在这里输入图像描述

  2. 您的断点现在已启用。

在这里输入图像描述

在“Node.exe选项”字段中, --debug=$DEBUG_PORT v6和更低版本添加--debug=$DEBUG_PORT ,或者--inspect=$DEBUG_PORT v7或更高版本添加--inspect=$DEBUG_PORT ,其中$DEBUG_PORT用于表示您在debuggingconfiguration中指定的端口。

如果你不通过一个端口,只传递--debug--inspect标志,那么Nodedebugging器分别在端口5858和9229上侦听…他们在更高版本的节点中将默认端口更改为9229。

让我知道这是否有帮助!

  • 首先,您必须将Visual Studioconfiguration为GitHub符号 。
  • 附加和debugging电子 – >要启动debugging会话,打开PowerShell / CMD并执行您的Electrondebugging版本,使用应用程序打开作为参数。

     $ ./out/D/electron.exe ~/my-electron-app/ 
  • 在这里阅读完整的文档。


为了了解为什么符号不加载,在Windbg中input以下命令。

 > !sym noisy > .reload /f electron.exe 

使用Visual Studio(不是VSCode)和Node.js工具创build一个Electron应用程序