代码之家  ›  专栏  ›  技术社区  ›  TuanDT

将visual studio调试器连接到electron应用程序

  •  17
  • TuanDT  · 技术社区  · 8 年前

    我正在尝试从头开始从visual studio 2017(而不是vscode)调试electron应用程序。

    我创建了一个控制台nodejs项目,安装并保存electron。项目结构: enter image description here

    的内容 app.js (摘自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>
    

    然而,当我单击start时,electron应用程序启动,但调试过程似乎自行分离。当我尝试手动将调试器附加到所有electron进程时(调试->附加到进程->选择所有electron进程),断点声称不会被击中,因为没有加载任何符号。 enter image description here

    enter image description here

    有没有我错过的一步?由于调试可以在VSCode上完成,我假设它也可以在VS2017中完成?

    非常感谢。

    注意:我确实选中了抑制JIT优化,并取消选中了仅启用我的代码。

    3 回复  |  直到 8 年前
        1
  •  9
  •   Maria Ines Parnisari    8 年前

    1. 在Visual Studio中按以下方式配置应用程序:

    enter image description here

    enter image description here

    1. 调试(>);附加到进程。。。 连接类型和 http://127.0.0.1:5858 enter image description here

    2. 现在已启用断点。

    enter image description here

        2
  •  0
  •   rdgd    8 年前

    在“Node.exe Options”字段中,添加 --debug=$DEBUG_PORT 适用于NodeJS v6及以下版本或 --inspect=$DEBUG_PORT 对于NodeJS v7或更高版本,其中 $DEBUG_PORT

    --debug --inspect

        3
  •  0
  •   youpilat13 Ty Petrice    8 年前

    Windbg

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

    Creating an Electron app using Visual Studio (not VSCode) w/ Node.js tools