2017-07-22 13 views
2

私は現在、言語サーバー(lsp4jの上)を作成しており、言語サーバーをデバッグする必要があります。言語サーバープロトコルサーバーは、stdinとstdoutを使用してクライアントと通信します。リモートデバッグJVMが標準出力stderrにテキストを出力しないようにするにはどうすればよいですか?

今、私はクライアント(VSCode)から起動されたサーバーをデバッグしたいので、私は、生成されたJVMプロセス用のデバッグ・フラグに追加:

-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999 

突然これを実行すると、サーバーはしていませんsuspend = 0でもポートは開いており、ファイアウォールのmalarkeyは起きていないことが確認されました。

私は手動でコマンドラインを実行することを決めた、と私はそれがデバッグパラメータを受信した後、プロセスは、ないことをまず最初にstdoutに次の出力であることを参照してください。

Listening for transport dt_socket at address: 9999 

(ダブルずに放出されます

これは、言語サーバープロトコルの一部ではないstdoutまたはstdinに何かを出力すると、クライアントがサーバーを拒否するため、言語サーバーをデバッグできないと考えられます。

私の質問は、ラウンドアバウト方式で、内部JVMメッセージをstdout、stdin、stderrで別のJVMパラメータでサイレントにすることが可能かどうかを尋ねることです。

答えて

3

更新:

答えは「静か= y」を追加パラメータとしてあるように思われます。

-Xrunjdwp:輸送= dt_socketという、サーバー= Y、一時停止= N、アドレス= 9999、静か= Y

はlsp4jのgithubのページで解決策を提供するためのキリスト教のディートリッヒに感謝します。

関連する問題