web-dev-qa-db-ja.com

ノードデバッガーで「最初の行で中断」を無効にする方法

ノードデバッガーの「最初の行でブレーク」機能を無効にするコマンドライン引数または環境変数はありますか?

44

この問題 によると node リポジトリで開いていますが、現在、これは不可能です。これはまた、を実装する価値がある機能としてノードの人が見ないものでもあります。「それは一種の無意味に思われるからです。[…]実行中のプロセスにアタッチすることは正確です」同じこと。上記の問題の残りの説明を参照してください。

そのような機能が必要だと思われる場合は、投票してGithubの問題にコメントを残してください。応答がない場合は、新しい機能を開いてここにも投稿してください。

24

ノードには、実際には2つのデバッガー概念があります。V8デバッガー(TCPベースのプロトコルを使用)とノードコマンドラインデバッガー(CLI)です。

node debug app.jsを実行すると、マスターノードプロセスでデバッガーCLIが実行され、デバッグされたスクリプト(node --debug-brk app.js)に対して新しい子ノードプロセスが生成されます。オプション--debugまたは--debug-brkは、子プロセスでV8デバッガーをオンにするために使用されます。

--debug--debug-brkの違いは、後者は最初の行にブレークポイントを追加するため、実行はすぐにそこで停止するということです。

私はあなたにこの解決策を提案します:

  1. ウェブサーバーから子プロセスを作成する場合は、node --debugではなくnode debugを実行してください。このようにして作成される子プロセスは1つだけで、アプリケーションを実行していて、最初の行で一時停止されません。

  2. V8デバッガープロトコル -ノード組み込みCLIデバッガー node-inspector をサポートするデバッグツールを使用できるようになりました。または、独自のデバッガーフロントエンド(GUI ) もし良かったら。 (これは、CLIデバッガーをバックグラウンドで実行することによって達成しようとしていることだと思いますか?)

    組み込みCLIを使用することにした場合は、別の子プロセスをもう1つ作成し、ノードCLIデバッガーにステップ1で開始したプロセスに接続するように指示します。

    node debug localhost:5858

    前と同じように続けます。

32

自分で答えを探しているときにこれを見つけました-単に実行できるようです

node-debug --debug-brk=0 (progname)

これが誰かを助けることを願っています。

8
jnadro52

スタートボタンをクリックするchrome拡張機能を記述します

1.シェルを実行する

mkdir run_as_devtools
cd run_as_devtools
touch manifest.json
touch run_as_devtools.js

2.ファイルを編集する

run_as_devtools.js:

if (location.protocol === 'chrome-devtools:' && location.href.match(/ws=localhost/))(function () {
    'use strict';
    setTimeout(function () {
        try {
            document.querySelector('html /deep/ .long-click-glyph').click();
        } catch (e) {
            console.log(e);
        }
    }, 500);    
})();

manifest.json:(chromevoxのキーを使用するため、chromevoxでは使用しないでください)

{
   "content_scripts": [{
      "js": [ "run_as_devtools.js" ],
      "matches": [ "<all_urls>" ]
   }],
   "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB",
   "manifest_version": 2,
   "name": "Elevated Devtools extension",
   "version": "1.0"
}

3.拡張機能をインストールする

Chromeの設定-その他のツール-拡張機能-開発者モード-解凍された拡張機能を読み込み-select run_as_devtools folder

追伸Nodeインスペクターマネージャー https://stackoverflow.com/a/43018133/4831179

リファレンス: https://stackoverflow.com/a/17044405/4831179

1
blackmiaool

ノードv6からv7に切り替えるだけで同じ問題を解決しました

1
Sami

Blackmiaoolのアイデアに似ていますがより単純です。ノードv8を使用すると、スクリプトを--inspectで開始できます。次のコードが含まれている場合、Chrome devtoolsでデバッグウィンドウを開くと、デバッガーのポイントに直接移動できます。さらに、 "continue "ボタンをクリックすると、replに戻る前にコードを実行できます。

// app_Shell.js

var UserModel = require("./some_user_model");

function looper() {
    var Tmp = { UserModel: UserModel };
    debugger;
    setTimeout(looper, 100);
}
looper();

シェルスクリプトでは、次のようなことができます。

echo "Click the 'Open dedicated DevTools for Node' link"
python -mwebbrowser about:inspect
node --inspect app_Shell.js

詳細はこちらをご覧ください

0
AJP