2017-01-18 3 views
0

Прошу прощения, если я немного ниже деталей здесь, но основная проблема на самом деле пытается найти проблема с моим кодом. Я обновляю собственное расширение, основанное на примере языкового сервера (https://code.visualstudio.com/docs/extensions/example-language-server). Я столкнулся с проблемой, когда, когда я запускаю часть моего кода с помощью F5, и запускается окно отладки, я получаю:Отладка сервера сбойного языка

Сервер клиентского языка CSSLint разбился 5 раз за последние 3 минуты. Сервер не будет перезапущен.

Хорошо ... так ... вот что. Просмотр проблем в моем коде клиентского клиента ничего не показывает. DevTools для этого окна кода ничего не показывает.

В представлении «Проблемы» для кода сервера ничего не отображается. DevTools, то же самое.

Для экземпляра хоста Extension Developer, DevTools действительно показывает это:

messageService.ts: 126 Сервер клиентского CSSLint Язык врезались 5 раз в течение последних 3-х минут. Сервер не будет перезапущен. E.doShow @ messageService.ts: 126

Но я не могу вникнуть в детали, чтобы найти ошибку. Таким образом, вопрос заключается в том, что, если мой код сервера терпит неудачу, где именно будут доступны ошибки?

+0

Из того, что я могу сказать - этот вопрос с конкретным требует заявления на сервер. У меня сейчас работает, но мне нужно вернуться к исходному коду и заставить его работать, что требует от меня возможности найти ошибку. –

ответ

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)

Если вы хотите отлаживать запуск/инициализацию сервера последовательность можно изменить debugOptions на:

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

Если расширение запускается в режиме отладки (например, например, запущенного с VS кодекса при помощи F5), то LanguageClient автоматически запускает сервер в режиме отладки. Если расширение запускается нормально (например, в качестве реального расширения в VS-коде), тогда сервер также запускается нормально.

Для того, чтобы все это работало вам нужна последняя версия модуля узла НОГО LSP как для сервера, может клиент (например, 2.6.x)

+0

Итак, я попробовал предлагаемую версию debug-brk, и в моем коде сервера добавлено: let foo = require2 ('./ csslint'); Затем я сделал сборку, а в моем клиентском коде - f5, и появилось третье окно VSCode. Но я ничего не вижу в окне кода клиента. Нет никаких указаний на то, что что-то пошло не так с кодом сервера. –

+0

Вы упомянули о вас на сервере языков http://code.visualstudio.com/docs/extensions/example-language-server. Есть шаги в том, как отлаживать клиент и сервер. Если вы запустите сервер с помощью --debug-brk, он будет разбит на первый оператор файла server.js. Поэтому вам нужно прикрепить отладчик к серверу на том порту, который вы передали через --debug-brk. Это позволит вам выполнить код сервера. Доступен ли ваш проект на GitHub. Если так, я мог бы взглянуть и помочь установить все. –

+0

Yep - Я следую за этим основным отличием - вы использовали 6009 выше, и они, кажется, используют 6004. Что касается порядка работы - ctrl + shift + b на сервере, f5 в клиенте, то f5 на сервере. Все еще ничего в консоли. Я могу поделиться кодом - позвольте мне просто зарегистрироваться - но имейте в виду, что у него есть намеренная ошибка в server.js, чтобы попытаться помочь ей. –