electron 内核 windows debug 求助

nashaofu · 2024-3-13 13:03:37 · 59 次点击
当前已经在 windows 上把 electron 源码弄下来了,并且也能够编译出 electron.exe 了。现在想要在 vscode 或者 visual studio 里面断点调试,这一步被卡住了。在 powershell 中运行如下命令可以编译成功:
```sh
mkdir electron
cd electron

# 拉取代码
gclient config --name "src/electron" --unmanaged https://github.com/electron/electron@v29.1.1
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 如下:
```json
{
  // 使用 IntelliSense 了解相关属性。
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "fersion": "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 命令如下:
```sh
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. 希望能在 vscode 中断点调试 electron 源码
2. 希望能在 vs2022 中编译 electron
3. 如果可以,希望指导添加一个编译结果,在工程中添加一个新的文件,文件里面有 main 函数,把这个文件编译为二进制文件直接执行,从而方便调试自己想要的模块,而不需要启动整个 electron 项目
举报· 59 次点击
登录 注册 站外分享
1 条回复  
ysc3839 小成 2024-3-13 21:39:00
运行后直接 VS 附加进程,有调试符号就能对应源代码调试。
gn 生成 IDE 项目的功能不是给你编译的,只是为了用 IDE 的自动补全、查找定义等功能,编译只能用 ninja 。
返回顶部