• 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中此时会断在初始化代码处。**
  • 相关阅读:
    Linux:进程模型和进程管理
    放弃60万年薪考公!程序员完败公务员?
    StripedFly恶意软件框架感染了100万台Windows和Linux主机
    第二部分:DDD 设计中的基本元素
    Redis数据结构
    计算机毕设(附源码)JAVA-SSM家用电器电商网站设计
    Vue3+ts(day07:pinia)
    大数据Kubernetes(K8S)命令指南 超级详细!
    2022年SQL经典面试题总结(带解析)
    基于SVM的车牌识别算法
  • 原文地址:https://blog.csdn.net/qq_42208826/article/details/125889059