
当前已经在 windows 上把 electron 源码弄下来了,并且也能够编译出 electron.exe 了。现在想要在 vscode 或者 visual studio 里面断点调试,这一步被卡住了。在 powershell 中运行如下命令可以编译成功:
mkdir electron cd electron # 拉取代码 gclient config --name "src/electron" --unmanaged https://github.com/electron/[email protected] gclient sync --with_branch_heads --with_tags cd src $env:CHROMIUM_BUILDTOOLS_PATH = "$(Get-Location)\buildtools" gn gen out/Testing --args="import(\`"//electron/build/args/testing.gn\`")" ninja -C out/Testing electron 编译出来的二进制文件好像没办法直接调试,好像是 electron 执行后,会创建多个子进程,并且当前进程会结束掉,导致无法调试,vscode 调试配置 launch.json 如下:
{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(Windows) Launch", "type": "cppvsdbg", "request": "launch", "program": "${workspaceFolder}\\src\\out\\Testing\\electron.exe", "args": ["demo"], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [ { "name": "ELECTRON_ENABLE_LOGGING", "value": "true" }, { "name": "ELECTRON_ENABLE_STACK_DUMPING", "value": "true" }, { "name": "ELECTRON_RUN_AS_NODE", "value": "" } ], "externalConsole": false, "sourceFileMap": { "o:\\": "${workspaceFolder}" } } ] } 所以就想着把项目编译为 vs2022 的工程,但是在执行 gn gen 的时候就会报错,gn gen 命令如下:
gn gen out/Testing --args="import(\`"//electron/build/args/testing.gn\`")" --ide=vs2022 报错内容说不能找到文件:src/out/Testing/win_clang_x64_for_rust_host_build_tools/obj/build/rust/tests/test_rlib_crate/test_rlib_crate_associated_bin_test_rlib_crate_associated_bin_vunknown_build_script_win_clang_x64_for_rust_host_build_tools.vcxproj.filters
述求(能实现任意一个都可以):
1 nashaofu OP launch.json 修改一下 sourceFileMap 后,可以断点调试了,但是在调试面板中不能显示变量,鼠标悬浮到变量上也不能显示变量值,在调试控制台中,也不能输出值。 ``` "sourceFileMap": { "o:\\": "${workspaceFolder}/src" } ``` https://imgur.com/a/KBirtw4 |
2 ysc3839 2024-03-13 21:39:00 +08:00 via Android 运行后直接 VS 附加进程,有调试符号就能对应源代码调试。 gn 生成 IDE 项目的功能不是给你编译的,只是为了用 IDE 的自动补全、查找定义等功能,编译只能用 ninja 。 |
5 nashaofu OP @ysc3839 感谢,已经搞定,修改 src\electron\build\args\testing.gn 中 symbol_level=2 即可 |