• Electron 调试node_internal代码*


    # ** Electron 调试node_internal代码

    问题

    通常意义上,我们想要调试Electron的JS代码确实不太容易,以electron-quick-start为例,在VSCode中按下F10断下代码的位置,顶多就是Electron的init.js;node初始化过程在我们按下开始调试的按钮时,就已经跳过了。那我们想要调试node初始化流程,那要咋整?

    前置条件

    • 需要修改electron_node的代码,因此需要重新编译electron;

    流程

    1. src\third_party\electron_node\src\node_options.h中修改DebugOptions结构体的值,如下:
        // --inspect
        bool inspector_enabled = true; // 生产环境中可以关闭这个选项。
        // --debug
        bool deprecated_debug = false;
        // --inspect-brk
        bool break_first_line = true;
        // --inspect-brk-node
        bool break_node_first_line = true;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      貌似可以传参数--inspect-brk-node来开启,但实际上在6.1.12中,传递该参数无效。更新的版本不知道该问题是否已经修复。
      修改完成后,编译,替换;
    2. VSCode的调试配置中,新增附加调试选项:
      {
            "address": "127.0.0.1",
            "localRoot": "${workspaceFolder}",
            "name": "Attach to Main Process",
            "port": 9229,
            "remoteRoot": "Absolute path to the remote directory containing the program",
            "request": "attach",
            "skipFiles": [],
            "type": "pwa-node"
      },
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      注意:skipFiles字段中不能忽略node_internal相关的东西;不然相关断点即便命中了也会被立马恢复。
    3. 调试
      1. 首先启动重新编译好的electron主程序;因为第一步中相关设置已经修改生效,electron会等待调试器链接;
      2. VSCode中启动第二步中的附加调试配置,如果一切就绪;那么VSCode中此时会断在初始化代码处。**
  • 相关阅读:
    「计算机基础」进制转换
    搭建GraphQL服务
    使用Go语言交叉编译开发嵌入式Linux应用程序
    KM知识文档管理系统对企业的重要性
    svg描边动画的实现
    Java函数详解:获取传入日期的最后一天
    【已解决】将一个2708行64列的在GPU上的张量z0矩阵保存下来,格式为csv
    centos7 arm服务器编译安装onnxruntime-gpu
    面试经典150题——Day2
    百度网盘开启画中画教程介绍
  • 原文地址:https://blog.csdn.net/qq_42208826/article/details/125889059