我正在尝试使用VSCode调试我的电子锻造项目(电子主进程,而不是渲染),但到处都是错误的。我安装了electron-forge
包含所有依赖项并初始化我的项目。
我遵循this指令,我的launch.json
代表VSCode:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Electron Main",
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-forge-vscode-win.cmd",
"cwd": "${workspaceRoot}"
}
]
}
但是当我在VSCode中点击F5
进行调试时,我得到了Attribute "runtimeExecutable" does not exist
,因为全局安装了electron-forge
所以node_modules/.bin/
dir中没有这样的文件。
然后根据this我更改了"runtimeExecutable"
,我的launch.json
如下:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Electron Main",
"runtimeExecutable": "electron-forge-vscode-win.cmd",
"cwd": "${workspaceRoot}"
}
]
}
命令行是:
electron-forge-vscode-win.cmd --debug-brk=17423 --nolazy
√ Locating Application
√ Preparing native dependencies
√ Launching Application
但仍然没有发生。我的电子应用程序已启动,但并没有因为--debug-brk
论证而停止。
接下来,我在launch.json
添加了一行:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"cwd": "${workspaceRoot}",
"name": "Electron Main",
"runtimeExecutable": "electron-forge-vscode-win.cmd",
"protocol": "inspector"
}
]
}
使用此命令行启动:
electron-forge-vscode-win.cmd --inspect=11172 --debug-brk
√ Locating Application
√ Preparing native dependencies
√ Launching Application
注意: 11172 是随机端口号
现在我收到了这个错误:Cannot connect to runtime process, timeout after 10000 ms - (reason: Cannot connect to the target: connect ECONNREFUSED 127.0.0.1:11172)
。
答案 0 :(得分:3)
我相信你需要添加
import time
import gi
import RPi.GPIO as GPIO
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(18, GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
class gui:
inputValue = GPIO.input(18)
if inputValue == True:
self.label.set_text("There is input")
def on_window1_destroy(self, object, data=None):
print( "quit with cancel")
Gtk.main_quit()
def on_okButton_clicked(self,button,data=None):
self.label.set_text("Waiting for input")
def __init__(self):
self.gladefile = "2.glade"
self.builder = Gtk.Builder()
self.builder.add_from_file(self.gladefile)
self.builder.connect_signals(self)
self.window = self.builder.get_object("window1")
self.label = self.builder.get_object("Label")
self.label.set_text("Hello")
self.window.show_all()
if __name__ == "__main__":
main = gui()
Gtk.main()
到你的启动配置。这是假设您正在使用节点版本< 8.x中
答案 1 :(得分:3)
我得出的结论是,如果使用电子伪造或电子编译,则不能使用VSCode来调试主电子过程。在这两种情况下,VSCode调试器都会忽略断点。 BrowserWindow直接出现,VSCode调试控制台窗口中显示以下消息:
Debugging with inspector protocol because a runtime executable is set.
c:\Users\paulk\OneDrive\dev\forge-debug/node_modules/.bin/electron.CMD --inspect=16988 --debug-brk .
Debugger listening on ws://127.0.0.1:16988/9cead160-c448-4b33-a8a2-2dff6f51ed59
有时当我关闭浏览器窗口时,会触发“关闭所有窗口”事件处理程序中的断点。关闭窗口后,调试控制台中将显示以下消息:
Debugger attached.
这可能表示VSCode调试器在BrowserWindow关闭之后才会附加。
我认为问题源于电子编译,eletron-forge使用。也许它与动态编译有关。
使用VSCode调试简单的Electron应用程序是轻而易举的。此外,plain Electron在调试器窗口中发出不同的消息:
Debugging with inspector protocol because a runtime executable is set.
c:\Users\paulk\OneDrive\dev\electron-quick-start/node_modules/.bin/electron.CMD --inspect=37884 --debug-brk .
Debugger listening on port 37884.
Warning: This is an experimental feature and could change at any time.
这表明普通电子使用的是与电子编译不同的连接调试器的方法。
遗憾的是,电子伪造不适用于VSCode主进程调试。这对我来说没用。此外,电子伪造和电子编译的开发人员似乎并不认为这是一个问题。了解电子伪造和电子编译的开发人员以及这些软件包的用户正在使用哪些调试器来调试主进程代码将会很有帮助。
答案 2 :(得分:0)
只需在协议后【"port": 11172】
添加launch.json
。