Como configurar o Electron com o VSCode usando o protocolo legado, o elétron 1.6.7, o nó v6.11.1, o vscode 1.17 e o firefox?

0

Eu li recentemente o artigo sobre depuração Electron de vários destinos com o VSCode cuja URL é link e conseguiu que ele funcionasse perfeitamente em um Oracle VM VirtuaBox Manager contendo o sistema operacional RedHat Linux 7.1 com o elétron 1.8.2, o nó v8.9.4, o vscode 1.17 e o firefox usando o protocolo do inspetor. Aqui está o meu launch.json que define pontos de interrupção dentro de main.js e main.cpp, um addon de C ++ que calcula se um inteiro é um número primo.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type":"cppdbg",
            "program": "/home/hellodev/Downloads/node-v6.11.1-linux-x64/bin/node"
            "args": [
                "--inspect-brk=5858",
                "main.js"
            ],
            "request": "launch",
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "serverLaunchTimeout": 50000
        },
        {
            "type": "node",
            "request": "attach",
            "timeout":  10000,
            "name": "Attach Program",
            "port": 5858,
            "protocol": "inspector"
        },
        {
            "type":"node",
            "request":"launch",
            "name":"Electron Main",
            "runtimeExecutable":"/home/hellodev/node-cpp-addons/node_modules/electron/dist/electron"
            "protocol":"inspector"
         }

    ],
    "compounds": [
        {
            "name": "Server/Client",
            "configurations": ["Electron Main","(gdb) Launch","Attach Program"]
        }
    ]
}

Como eu poderia também estender este artigo no mesmo Oracle VM VirtuaBox Manager contendo o sistema operacional RedHat Linux 7.1 para usar o protocolo legado, o elétron 1.6.7, o nó v6.11.1, o vscode 1.17 e o firefox e o que seria o lançamento revisado? .json parece?

Sem sucesso, tentei uma tarefa de pré-lançamento de elétrons cujas tasks.json são mostradas abaixo. A razão pela qual tentei uma tarefa de pré-lançamento é porque runtimeExecutable é reservado para o protocolo do inspetor em vez do protocolo legado. No entanto, a tarefa de pré-lançamento gera um erro de tempo de execução EADDRESSINUSE: porta 5858.

{
    "version": "1.6.7",
    "command": "electron",
    "isShellCommand": true,
    "args": [

"--remote-debugging-port=5858",   
       "${workspaceRoot}/main.js",
    ]
}

e recebeu a mensagem de erro "Não é possível conectar-se ao processo de tempo de execução: Motivo: Soquete finalizado por outra parte" quando usei o seguinte launch.json com a seta verde vscode para executar uma configuração de ativação composta.

"configurations": [
        {
            "name": "(gdb) Launch",
            "type":"cppdbg",
            "program": "/home/hellodev/Downloads/node-v6.11.1-linux-x64/bin/node"
            "args": [
               "--inspect-brk=5858",
                "main.js"
            ],
            "request": "launch",
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "serverLaunchTimeout": 50000
},
{
            "type": "node",
            "request": "attach",
            "timeout":  10000,
            "name": "Attach Program",
            "port": 5858,
            "protocol": "legacy"
         },
        {
            "type":"node",
            "request":"launch",
            "name":"Electron Main",
            "preLaunchTask": "electron",
            "protocol":"legacy", //Specify to use v8 inspector protocol
            "port": 5858,
            "timeout": 28000
         }


    ],
    "compounds": [
        {
            "name": "Server/Client",
            "configurations": ["Electron Main","(gdb) Launch","Attach Program"]
        }
    ]

}

[24 de fevereiro de 2018] @Andre Weinand, mostro aqui meu launch.json mais novo, que causa a mensagem de erro "Não é possível conectar-se ao tempo de execução; verifique se o tempo de execução está no modo de depuração 'herdado'." mostrar. Eu tentei seguir todas as suas recomendações anteriores, mas ainda estou encontrando problemas. Portanto, quando clico na seta verde vscode correspondente à configuração de ativação composta Servidor / Cliente, ele inicia o "Electron Main", mas não atinge os pontos de interrupção do GDB que eu configurei no main.cpp, que é um complemento do C ++. Eu entendo o que você está dizendo sobre a colocação de instruções de depurador no código-fonte addon C ++, mas eu preferiria não fazer. Como eu poderia consertar meu launch.json?

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type":"cppdbg",
            "program": "/home/xyzdev/Downloads/node-v6.11.1-linux-x64/bin/node"
            "args": [
                "--debug=5858"
                "main.js"
            ],
            "request": "launch",
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
             "launchCompleteCommand": "None"

        },
        {
            "type": "node",
            "request": "attach",
            "timeout":  10000,
            "name": "Attach Program",
            "port": 5858,
            "protocol": "legacy"
        },
        {
            "type":"node",
            "request":"launch",
            "name":"Electron Main",
            "runtimeExecutable":"/home/xyzdev/node-cpp-addons/node_modules/electron/dist/electron",
            "runtimeArgs": [
                "${workspaceRoot}/main.js",
                "--remote-debugging-port" //Set debugging port for renderer process
            ],
            "protocol":"legacy"
         }


    ],
    "compounds": [
        {
            "name": "Server/Client",
            "configurations": ["Electron Main","(gdb) Launch","Attach Program"]
        }
    ]

}

[26 de fevereiro de 2018] @Andre Weinand, Li que você escreveu em 10 de maio de 2017 no artigo github.com link que diz: "Você pode usar o protocolo" legado "ou" inspetor "para a versão do nó > 6,3 e < 8,0, mas você precisa se certificar de que está usando a correspondência" --debug "ou" --inspect "argumento.

BTW, esta redundância na configuração de lançamento será corrigida na versão de maio: você não precisará mais especificar uma porta, apenas o protocolo fará a coisa certa. "Desde que eu estou usando a versão de nó 6.11. 1, que é > 6,3 e < 8,0, fiquei me perguntando se poderia mudar nosso launch.json para o protocolo "inspector" em vez do protocolo "herdado" para obter depuração "perfeita", como consegui fazer com o nó 8.9 .4? Obrigado

    
por Frank 17.02.2018 / 22:40

1 resposta

2

O atributo "protocol" determina se o protocolo "inspector" ou "legacy" é usado. Leia nosso documento: link .

Você não pode executar duas sessões de depuração com a mesma porta de depuração em paralelo (o que você faz na última configuração de depuração acima). E há um "programa" ou "runtimeExecutable" em falta.

Sugiro alterar o valor do atributo "protocol" na configuração mais depurada para "legacy" (assumindo que o protocolo é o único problema dessa configuração).

    
por 18.02.2018 / 19:23