2017-01-18 34 views
0

ここでは少し詳しく説明しませんが、主な問題は実際にはであることを詫びます。私のコードで問題が見つかりました。私は、言語サーバの例(https://code.visualstudio.com/docs/extensions/example-language-server)に基づいて私自身の古い拡張を更新しています。私は、F5を使用してコードのクライアント部分を実行し、デバッグウィンドウが起動したときに問題に遭遇しました。クラッシュする言語サーバをデバッグする

最後の3分間にCSSLint言語クライアントサーバーが5回クラッシュしました。サーバーは再始動されません。

大丈夫です...そうですね。私の拡張クライアントコードの問題ビューには何も表示されません。そのコードウィンドウのDevToolsには何も表示されません。

私のサーバーコードの問題ビューには何も表示されません。 DevTools、同上。拡張開発者のホスト例えば

は、デベロッパーツールはこれを示してい:

messageService.ts:126 CSSLint言語のクライアント・サーバは、最後の3分間で5回墜落しました。サーバーは再起動されません.e.doShow @ messageService.ts:126

しかし、詳細を掘り下げてバグを見つけることはできません。だから問題は - 私のサーバーコードが失敗していると仮定すると、どこでエラーが利用できるのでしょうか?

+0

ができますが、両方のサーバに対してLSPノードNPMモジュールの最新バージョンを必要とする仕事にこれを行うにはサーバ側。私は今実行していますが、元のコードに戻って動作させる必要があります。エラーを何とか見つけることができなくてはなりません。 –

答えて

0

ここで私は通常サーバーのクラッシュを追跡するために(私はあなたのサーバーがJavaScript/TypeScriptで書かれていると仮定します)。

は、次のサーバーオプションを使用します。ここ

let serverModule = "path to your server" 
let debugOptions = { execArgv: ["--nolazy", "--debug=6009"] }; 
let serverOptions = { 
    run: { module: serverModule, transport: TransportKind.ipc }, 
    debug: { module: serverModule, transport: TransportKind.ipc, options: debugOptions} 
}; 

キーTransportKind.ipcを使用することです。サーバーで発生し、stdioに出力されたエラーは、サーバーに関連付けられた出力チャネルに表示されます(出力チャネルの名前はLanguageClientに渡される名前です)。

サーバーの起動/初期化拡張子がデバッグモード(F5を使用して、VSのコードから起動例えば例えば)に開始された場合、LanguageClientは、自動的にデバッグモードでサーバーを起動する

let debugOptions = { execArgv: ["--nolazy", "--debug-brk=6009"] }; 

:シーケンスは、あなたがにdebugOptionsを変更することができます。エクステンションが正常に開始された場合(例えば、VSコード内の実際の拡張機能)、サーバーも正常に開始されます。問題が特定のとあった上で声明を要求 -

は、すべてのクライアント(たとえば、2.6.xの)私が言うことができるものから、

+0

私はあなたが提案したdebug-brkを試してみました。私のサーバーコードには次のように追加されました:let foo = require2( './ csslint');その後、ビルドを行い、クライアントコードでf5を押すと、3番目のVSCodeウィンドウがポップアップします。しかし、クライアントコードウィンドウには何も表示されません。サーバーコードで何かが間違っていたことを示すものはありません。 –

+0

http://code.visualstudio.com/docs/extensions/example-language-serverの言語サーバーに基づいてお話しました。そこにクライアントとサーバーをデバッグする方法のステップがあります。 --debug-brkを使用してサーバを起動すると、server.jsファイルの最初の文が破られます。 --debug-brkで渡したポートのデバッガをサーバに接続する必要があります。これにより、サーバーコードをステップ実行することができます。あなたのプロジェクトはGitHubで利用可能ですか?もしそうなら、私は見て、すべてを設定するのに役立つことができます。 –

+0

ええ - 私はそのツタンツに従っています - 主な違いはあなたが6009を使用していると思われ、それらは6004を使用しているようです。操作の順序 - ctrl + shift + bはサーバー、f5はクライアント、f5はサーバー。まだコンソールには何もありません。私はコードを共有することができます。ちょっとチェックインしてみましょう。しかし、server.jsに意図的なバグがあり、それを肉付けするのを助けようとしていることに注意してください。 –

関連する問題