簡體   English   中英

如何調試“構建”的生產 NodeJS

[英]How to debug “built” production NodeJS

我正在使用 Visual Studio 代碼在生產環境中調試節點應用程序

Node進程在docker內部運行,

我端口轉發並通知 USR1 以啟用將調試器從 VS 代碼附加到該節點進程

我的 VS Code 配置是這樣的

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Debug: service",
      "sourceMaps": true,
      "smartStep": true,
      "remoteRoot": "/src/",
      "localRoot": "/home/my-username/work/orders/src/",
      "protocol": "inspector",
      "port": 9229,
      "restart": true,
      "address": "0.0.0.0",
      "skipFiles": [
        "<node_internals>/**",
        "<node_modules>/**"
      ]
    }
  ]
}

從 VS 代碼,我可以掛接到應用程序並且應用程序可以在異常時中斷但是沒有源映射導致我的源代碼中的所有斷點都是“未綁定斷點”

VS 代碼中加載的腳本列表顯示

在此處輸入圖像描述

VS 代碼調試器能夠在 dist 中看到 node_modules 和我的源代碼的構建版本。 另一個值得注意的一點是,用於構建 /dist 的源代碼也可以直接在生產服務器的上層文件夾中獲得。

在這種情況下,如何使用我未構建的源代碼調試構建的生產過程?

我將 Chrome 行為添加為單獨的問題

NodeJs:Chrome 檢查器可以 map 源但無法在原始源上調試

不知道對你有沒有幫助。 但我認為你必須使用node-inspector 它可以在任何支持 WebSocket 的瀏覽器中使用。 這真的很好。

很酷的東西

  • Node Inspector 使用 WebSockets,因此無需輪詢中斷。
  • 遠程調試和調試遠程機器。
  • 實時編輯正在運行的代碼,可選擇將更改持久化回文件系統。
  • 在尚未加載到 V8 的文件中設置斷點 - 對於調試模塊加載/初始化很有用。
  • 可嵌入其他應用程序 - 請參閱嵌入 HOWTO 了解更多詳細信息。

Node 已經附帶了一個集成的調試器。 但是,它沒有 GUI,因此您需要使用命令行版本。

您可以使用節點調試啟動此調試器。

$node debug test.js
< Debugger listening on port 5858
debug> . ok
break in test.js:1
> 1 var a= 5;
  2 a = a*a
  3 a += 2;
debug>

它向您顯示暫停的位置,然后讓您使用 next 和 cont 等命令控制執行。

debug> next
break in test.js:2
  1 var a= 5;
> 2 a = a*a
  3 a += 2;
  4

repl 和 watch 命令允許您查看局部變量的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM