• 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中此时会断在初始化代码处。**
  • 相关阅读:
    力扣题解12-15
    新一代垃圾回收器—ZGC
    Selling Partner API Document
    API接口是什么?API接口常见的安全问题与安全措施有哪些?
    PDF怎么翻译成中文?这些方法值得收藏
    等保2.0自查表(管理部分)
    分布式集群——搭建Hadoop环境以及相关的Hadoop介绍
    css知识学习系列(6)-每天10个知识点
    go get 使用 proxy
    Spark和Hadoop的对比
  • 原文地址:https://blog.csdn.net/qq_42208826/article/details/125889059