53

'forever'を使用してアプリケーションを実行します。実行中の環境に接続して、アプリケーションを検査したいと思います。それで、なにかお手伝いできますか?

4

7 に答える 7

59

http://nodejs.org/api/debugger.htmlから:

高度な使用法

V8デバッガーは、-debugコマンドラインフラグを使用してNodeを起動するか、SIGUSR1を使用して既存のNodeプロセスに信号を送ることにより、有効にしてアクセスできます。

プロセスのPIDを見つけて、node送信SIGUSR1するとうまくいくはずです。

kill -s SIGUSR1 nodejs-pid

次に、実行node-inspectorして、表示されているURLを参照します。このチュートリアルの詳細。

于 2012-10-24T16:34:01.707 に答える
36

Node 6.3以降、ノードには次の操作を行うことでトリガーできるデバッガーが組み込まれています(本番アプリでも)。

kill -USR1 <node-pid>

ノードプロセスは次のようなものを吐き出します:

Debugger listening on ws://127.0.0.1:9229/f3f6f226-7dbc-4009-95fa-d516ba132fbd
For help see https://nodejs.org/en/docs/inspector
  • ブラウザからサーバーにアクセスできる場合は、で使用できchrome://inspectますhttp://host.domain:9229
  • ブラウザ経由で接続できない場合(たとえば、サーバーがファイアウォールで保護された実稼働クラスター内にある場合)、REPLをアクティブ化して、コマンドラインで検査できます。

    node inspect -p <node-pid>
    
  • ブラウザからサーバーにアクセスできないが、そのサーバーにSSHで接続できる場合は、SSHポートフォワーディング()を設定すると、数秒後にssh -nNTL 9229:localhost:9229 <username>@<your_host> -i <keyfile>.pemスクリプトが表示されます。chrome://inspect

このバージョンより前node-inspectorは、ノードプロセスをデバッグするための別個のツールでした。ただし、独自のページに記載されているように、現在バンドルされているデバッガーはアクティブに保守され、より高度な機能を提供するため、ほとんどの場合非推奨になっています。この変更の詳細については、このスレッドを参照してください。

于 2018-01-11T18:55:40.530 に答える
8

Windowsユーザー

/編集2022

これは私が現在使用しているもので、settings.jsonで構成されています。これにより、プロセスを選択するように求められ、デバッグ信号が自動的に送信されます。何が起こっているのかを理解するには、以下をお読みください。

ここに画像の説明を入力してください

  "launch": {
    "version": "0.2.0",
    "configurations": [
      {
        "name": "Attach to Process (Pick)",
        "type": "node",
        "request": "attach",
        "processId": "${command:PickProcess}",
        "port": 9229,
      }
    ]
  },



以前

POSIXシグナルをサポートしていないWindowsを使用している場合は、別の cmdからこの回避策を使用できます。

node -e "process._debugProcess(PID)"



詳細なガイド、またはVSCodeでデバッグを設定するには、次の簡単な手順に従います。

  1. VSCodeで、launch.json構成を開くか、ホイールをクリックして新規作成します
    (これはデバッグビューですCtrlShiftD) 。

ここに画像の説明を入力してください

  1. ノードはデフォルトでポート9229でリッスンするため、次の構成を追加します。
{
  "type": "node",
  "request": "attach",
  "name": "Attach to 9229",
  "port": 9229
},
  1. タスクマネージャーを開き、ノードプロセスのPIDを見つけます。これは、が存在するフォルダーで
    識別できます。 "build"index.jsここに画像の説明を入力してください
  2. 別の cmdまたはを開きgit-bash、このコマンドを実行します。
    ここ21392で、はプロセスのPIDです。
node -e "process._debugProcess(21392)"
  1. あなたはこれを見るはずですws:9229をリッスンしているデバッガー
  2. VSCodeAttachから9229へのデバッグを開始します
    ここに画像の説明を入力してください

これですべての準備が整います。

于 2019-09-12T08:12:51.563 に答える
7

私の場合、ノードバージョン6.9.10を実行するには、次のことを行う必要がありました。

kill -USR1 <node-pid>

それから

node debug -p <node-pid>

node inspect -p <node-pid>このバージョンのノードではコマンドが失敗しました。

于 2018-03-04T09:45:42.563 に答える
5

アプリにREPLを追加できます。たとえば、ローカルホストポート5001でリッスンするREPLを追加する場合は、通常どおりアプリを起動し、telnetでログインしますtelnet localhost 5001。これにより、アプリを直接操作できるプロンプトが表示されます。

または、アプリが特定の状態に達したときに「一時停止」する必要がある場合は、「デバッガー」を追加する必要があります。これらのブレークポイントが必要なコードの領域への行を入力してから、アプリをデバッグモードで起動します。

お役に立てば幸いです。

于 2012-10-25T14:22:00.330 に答える
0

それは古いが答えられた質問ですが、より簡単な方法があります。それは、ノードにパラメーターを渡すことです。

forever start -c 'node --debug-brk' main.js

--debug-brkデバッガーが接続されるのを待ちたくない場合は、次のように置き換えます。--debug

于 2014-10-14T16:58:16.647 に答える
0

nodejsを検査してデバッグするには、このコマンドを使用します

forever -w -c 'node --inspect=IP:PORT' file.js

  • -cカスタムコマンドの場合
  • ファイルが再保存されている場合は、 -wを使用してリロードします
  • 外部検査のためにIPとポートを渡すことができます
  • ポートカスタムは9229です
于 2018-03-01T19:38:51.480 に答える