【问题标题】:Is it possible to debug node internal modules?是否可以调试节点内部模块?
【发布时间】:2019-10-19 13:12:42
【问题描述】:

例如,我想在内部文件_http_server.js 上添加一些断点,但该文件在我的磁盘上并不存在。

我该怎么办?

【问题讨论】:

    标签: node.js debugging visual-studio-code google-chrome-devtools


    【解决方案1】:

    Chrome DevTools 让这一切变得简单。

    使用--inspect 标志启动 Node.js 进程:

    $ node --inspect
    Debugger listening on ws://127.0.0.1:9229/14be5d05-e959-47f9-bd82-e64c307d1afb
    For help, see: https://nodejs.org/en/docs/inspector
    

    访问 chrome://inspect 并打开附加到您的流程的 DevTools 会话:

    搜索内部文件(包括 _http_server.js 等内部节点模块)并在您想要的任何位置添加断点:

    【讨论】:

      【解决方案2】:

      是的,在编译时,源代码中的 .js 文件被打包到 node 可执行文件中,这让我不确定是否/如何在那里设置断点。

      什么对我有用:

      1. 从节点源代码的签出处复制相关的.js文件到当前目录,例如readline.js
      2. 将本地导入从 require('readline') 更改为 require('./readline')
      3. 使用未记录的node --expose-internals 标志以允许复制的.js 文件仍为require('internal/…')
      4. 在现在的本地文件上使用console.log 语句/调试器来找出发生了什么

      【讨论】:

      • 那不是需要重新编译 Node.js 只是为了那一点点变化吗?
      • @Melab 不行,你把正常编译成nodejs的文件拷贝到本地目录下,然后直接调试就可以了。
      【解决方案3】:

      _http_server.js 在 nodejs/lib/_http_server.js 上。如果要调试此文件,建议从github.com/nodejs/node 下载源代码并开始调试。 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-11
        • 2018-09-04
        • 1970-01-01
        • 1970-01-01
        • 2017-03-22
        • 1970-01-01
        • 2011-09-14
        • 1970-01-01
        相关资源
        最近更新 更多