ステップ実行--debugと--debug-brkはNode8の時点ですでに非推奨なので、使わないでください。devtoolsまたは、VSCodeのようなIDEに任せる今回は、エディタ依存の話は特にしないです。止めたい場所に置いていくことになります。例として、以下のコードで説明していきます。console.log(data);})();コンソールでデバッグするinspectというのを使います。require('fs');debug>実行すると、一行目にbreakpointが置かれた状態で開始されます。c)と入力することにより、次のbreakpointまで実行されます。console.log(data);debug>先程書いたdebuggerまで到達したことがわかります。ここでdataなどの値が見たいと思います。そのようなときはreplというコマンドをdebugに対して打つことにより確認することができます。readFileAsync'function'>Ctrl+Cを実行することにより、debugに戻ることが可能です。一度、進めるともうdebuggerは存在しないため、終了となります。br現在の実行フレームのバックトレースを表示するrepl評価するためのデバッガーを立ち上げる基本的に上記だけで事足りると思います。(watchは個人的にはあまり使わない。Protocolを用いて、デバッグを行います。http)などでは、--inspectを使い、終了するコードには--inspect-brkを使います。--inspect-brkでは最初の行にbreakpointを自動的に配置します。コンソールがない版)今回の例の場合は、すぐに終了してしまうため、--inspect-brkを使います。URLバーに入力すると、devicesの部分にNodeがつながっていることが確認できます。inspectがリンクになっているので、クリックをするとChromeのdevtoolsが別windowで起動します。先程の、contは右ツールバーの一番左のボタンを押すことにより進めることができます。進むと以下のようになります。簡単にファイルから読み取った中身(data)が表示されました。終了しないコードの値を見る以下のコードをサンプルとします。--inspectを用いて起動させます。attached.あとは、上記と同じ方法で値の確認等が行なえます。breakpoint前ではリクエストをまだ返してない状態であり、進めるとレスポンスを返します。リモートデバッグパブリックIPをリッスンするのは問題なので、リモートデバッグを有効化する場合は、トンネリングする方法が推奨されています。sb(行番号)を使い、debug上で設定することが可能です。22)のように書くことによりbreakpointを置けます。.exitChromeの場合--inspect-brkを使い一旦起動させ、inspectorからbreakpointを設定していきます。Node関係なく、行番号の部分をクリックすることにより、設置できます。すると、右下のBreakpointsの枠に入ったのがわかります。Managerを使うと簡単にchromeのインスペクタを開くことができます。NIMの設定で自動でinspectorを開くに設定すると、--inspect-brk時やinspect時に勝手にChromeのInspectorが起動します。chrome.google.com使い分け基本的に、サーバー内でどうしても確認したい時以外は、Webエンジニアは慣れているだろうし、Chromeで大丈夫かなって思っています。便利なツールnode-reportもうすぐしたら、NodeのCoreへビルトインとして入ります。github.comオプションをつけることにより、ネイティブのスタックトレース、ヒープ統計情報、プラットフォーム情報、リソース使用状況などをファイルに出力します。以下の情報が記載されます。Information将来的にはこれを使うことになると思います。clinic今回は、clinicを用いて説明する場合があります。clinicを作っているのは、NearFormという会社で、JamesやAnna、MatteoなどのNode.jsのコミッターが所属する会社です。dockerやflame、bubbleprofの機能を提供します。github.comCPU負荷率を取るV8内のプロファイラの実行をサンプリングします。--profを使い、実行コードの負荷率をみることができます。index.jsと実行すると、isolate-0xNNNNNNNNN-v8.logみたいなファイルが生成されます。processed.txtと実行することにより、人間が読める形式になります。Unaccounted各言語ごとにセクションが存在し、そこでどれだけ負荷がかかっているかが記載されます。Profileを取るinspectで起動させ、Profilerタブから記録を取ります。(web開発同様)フレームグラフを見る頻繁なコードパスを可視化します。traceを示します。最適化済みを示し、~は非最適化を示します。薄い赤色ほど、off-CPUであり、濃い赤であるほどon-CPUです。以下を読むとわかりやすいです。Graphsメモリchromeのdevtoolsにあるmemoryからsnapshotを取得します。そこから比較をしていきメモリリークなどの発見を行います。使った方法もあります。server.js実行が短いプログラムには使えないことに注意してください。イベントループの遅延が見えるのがありがたいです。関数実行時間測定を行うperf_hooksモジュールを使い、区間の実行時間、関数の実行時間、GCのコールされた種類等を検知し、改善に役立てます。かかる時間を計測する例です。);};render(Main(1000000));slides.hiroppy.mebubbleprofを見るこれはclinicが作った手法で、Nodeのプロセスを可視化します。非同期処理を監視し、マッピングします。Coreでそれぞれ処理にかかった時間がわかります。非同期処理の実行回数と時間もわかります。この場合だとファイル読み込みに6.8msかかったことになります。使い、簡単に測定を行います。10:00Node.jsのアプリケーションデバッグ・改善方法をおさらいするTweet関連記事2019-06-24Markdownだけでスライドを作るCLIの大規模アップデートをしたFusumaの大規模アップデートです。Modulesの紹介Node.jsのESMについて紹介します。2018-09-26Node.jsでのイベントループの仕組みとタイマーについてNode.jsでのイベントループとタイマーを解説します。v10の変更点まとめNode9からの変更点をまとめます。週間)JavaScriptが好き。Node.jsとwebpackのコミッター。月別アーカイブはてなブログをはじめよう!about_hiroppyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。