Что такое произошла ошибка запустить отладку

From today morning, my Visual Studio is behaving very strangely. I get the error «one or more errors occurred failed to launch debug adapter» whenever I run the project.

enter image description here

I run my project profile instead of running it in the IIS Express profile. Here is my launchSettings.json file.

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:65498",
      "sslPort": 44318
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "<ProjectName>": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    }
  }
}

And when I check the Output window, this is what I get.

The program ‘[22052] .exe’ has exited with code -1
(0xffffffff).

Another thing I noticed is that a new browser tab is opened without any URL in it, just an about:blank page.

#visual-studio #asp.net-core #ide #visual-studio-2019 #development-environment

#visual-студия #asp.net-ядро #ide #visual-studio-2019 #разработка-окружающая среда

Вопрос:

С сегодняшнего утра моя Visual Studio ведет себя очень странно. Я получаю сообщение об ошибке «произошла одна или несколько ошибок, не удалось запустить debug adapter» всякий раз, когда я запускаю проект.

введите описание изображения здесь

Я запускаю свой профиль проекта вместо того, чтобы запускать его в профиле IIS Express. Вот мой launchSettings.json файл.

 {
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:65498",
      "sslPort": 44318
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "<ProjectName>": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    }
  }
}
 

И когда я проверяю окно вывода, это то, что я получаю.

Программа ‘[22052] .exe’ завершила работу с кодом -1 (0xffffffff).

Еще одна вещь, которую я заметил, — это то, что новая вкладка браузера открывается без какого-либо URL-адреса, просто about:blank страница.

Комментарии:

1. У меня тоже возникает такая же проблема, когда он работает нормально уже целую вечность. Внезапно после обновления Edge он перестал работать; У меня нет окна консоли, и у меня не открыто окно браузера. Единственное решение — перейти на Chrome. Что странно, так это то, что он работает в первый раз после перезагрузки, а затем во второй раз выходит из строя.

Ответ №1:

У меня тоже возникла эта проблема, и я думаю, что это может быть как-то связано с браузером Edge (или обновлением?) И отладчиком JavaScript. В первый раз, когда я запускаю веб-приложение, все работает нормально. Каждый раз после этого я получаю сообщение «не удалось запустить адаптер отладки», показанное выше.

Я должен либо отключить отладчик Javascript, либо использовать Internet Explorer для запуска приложения.

введите описание изображения здесь

Ответ №2:

Проблема заключалась в том, что процесс, который был запущен из моего предыдущего выполнения, все еще выполнялся. Когда мы запустим проект с помощью проекта profile, он запустит новый процесс, и вы можете увидеть, что есть новый Debug console window , как на предыдущем изображении.

введите описание изображения здесь

Вы можете просто закрыть это окно и снова запустить свой проект, и это устранит проблемы. Вы также можете включить параметр, который закроет этот процесс при остановке отладки. Для этого перейдите в Сервис, затем нажмите Параметры, выберите Отладка, а затем включите опцию Automatically close the console when debugging stops .

введите описание изображения здесь

Если вы не видите эту опцию, просто щелкните другие параметры в меню отладки и дождитесь загрузки содержимого, а затем снова щелкните меню отладки. Иногда он просто показывал пустой экран без каких-либо параметров. Похоже на ошибку Visual Studio 2019 .

Кроме того, не забудьте закрыть окно браузера, которое было открыто при последнем выполнении. Для меня он был открыт, поэтому открывалась новая вкладка с. about: blank

Счастливого кодирования !.

Комментарии:

1. К сожалению, это не исправило это для меня. Пробовал как с VS 2019, так и с VS 2020 Preview 2.1, все работало нормально, и со дня на день проблема начала возникать. VS запускает пустое окно браузера и не может определить, на каком порту запущен IIS. Таким образом, он пытается подключить отладчик к неправильному порту и получает отказ в подключении. Если я вручную перейду в том же окне браузера на страницу IIS Express, я смогу загрузить ее, но отладка по-прежнему не работает.

Ответ №3:

У нас та же проблема, zBestData что и выше, с момента перехода на Visual Studio 2019, версия 16.9.1.

В данный момент у нас не так много времени, чтобы разобраться в этом, но, похоже, это связано с msedge.exe процессы, оставшиеся запущенными после сеанса отладки. В качестве обходного пути перед запуском второго сеанса отладки закройте все окна open Edge, а затем отключите все msedge.exe экземпляры (например, в диспетчере задач).

В противном случае мы обнаруживаем, что нам необходимо перезапустить систему, чтобы устранить ошибку.

Комментарии:

1. То же самое для меня после обновления до 16.9.3. Перезагрузка исправила это. (Я не пытался просто закрыть Visual Studio и перезапустить ее самостоятельно. Это тоже может сработать.)

Ответ №4:

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

Объяснение:

Как указано в сообщении об ошибке, в окне вывода содержится дополнительная информация.

Откройте visualstudio-js-debugger.txt досье. Он должен находиться в расположении, аналогичном указанному ниже.

Не забудьте заменить ваше имя пользователя в приведенном ниже пути на ваше правильное имя пользователя.

 C:/Users/*your-user-name*/AppData/Local/Temp/visualstudio-js-debugger.txt
 

Файл должен выглядеть, как показано ниже, обратите внимание на идентификатор адаптера, выделенный красным, это браузер Chrome. Таким образом, в этом случае вы можете просто закрыть все экземпляры браузера Chrome.
введите описание изображения здесь

Отладка программы призвана выискивать «вредителей» кода и устранять их. За это отвечают отладчик и журналирование для вывода сведений о программе.

В предыдущей части мы рассмотрели исходный код и его составляющие.

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

Отладка программы

Это часто вызвано ошибками, известными как дефекты или исключительные ситуации во время выполнения. Акт обнаружения и удаления ошибок из нашего кода – это отладка программы. Вы лучше разберетесь в отладке на практике, используя ее как можно чаще. Мы не только отлаживаем собственный код, но и порой дебажим написанное другими программистами.

Для начала необходимо рассортировать общие ошибки, которые могут возникнуть в исходном коде.

отладка программы

Синтаксические ошибки

Эти эрроры не позволяют скомпилировать исходный код на компилируемых языках программирования. Они обнаруживаются во время компиляции или интерпретации исходного кода. Они также могут быть легко обнаружены статическими анализаторами (линтами). Подробнее о линтах мы узнаем немного позже.

Синтаксические ошибки в основном вызваны нарушением ожидаемой формы или структуры языка, на котором пишется программа. Как пример, это может быть отсутствующая закрывающая скобка в уравнении.

Семантические ошибки

Отладка программы может потребоваться и по причине семантических ошибок, также известных как логические. Они являются наиболее сложными из всех, потому что не могут быть легко обнаружены. Признак того, что существует семантическая ошибка, – это когда программа запускается, отрабатывает, но не дает желаемого результата.

Рассмотрим данный пример:

3 + 5 * 6

По порядку приоритета, называемому старшинством операции, с учетом математических правил мы ожидаем, что сначала будет оценена часть умножения, и окончательный результат будет равен 33. Если программист хотел, чтобы сначала происходило добавление двух чисел, следовало поступить иначе. Для этого используются круглые скобки, которые отвечают за смещение приоритетов в математической формуле. Исправленный пример должен выглядеть так:

(3 + 5) * 6

3 + 5, заключенные в скобки, дадут желаемый результат, а именно 48.

Ошибки в процессе выполнения

Как и семантические, ошибки во время выполнения никогда не обнаруживаются при компиляции. В отличие от семантических ошибок, эти прерывают программу и препятствуют ее дальнейшему выполнению. Они обычно вызваны неожиданным результатом некоторых вычислений в исходном коде.

Вот хороший пример:

input = 25
x = 0.8/(Math.sqrt(input) - 5)

Фрагмент кода выше будет скомпилирован успешно, но input 25 приведет к ZeroDivisionError. Это ошибка во время выполнения. Другим популярным примером является StackOverflowError или IndexOutofBoundError. Важно то, что вы идентифицируете эти ошибки и узнаете, как с ними бороться.

Существуют ошибки, связанные с тем, как ваш исходный код использует память и пространство на платформе или в среде, в которой он запущен. Они также являются ошибками во время выполнения. Такие ошибки, как OutOfMemoryErrorand и HeapError обычно вызваны тем, что ваш исходный код использует слишком много ресурсов. Хорошее знание алгоритмов поможет написать код, который лучше использует ресурсы. В этом и заключается отладка программы.

Процесс перезаписи кода для повышения производительности называется оптимизацией. Менее популярное наименование процесса – рефакторинг. Поскольку вы тратите больше времени на кодинг, то должны иметь это в виду.

Отладка программы

Вот несколько советов о том, как правильно выполнять отладку:

  1. Использовать Linters. Linters – это инструменты, которые помогают считывать исходный код, чтобы проверить, соответствует ли он ожидаемому стандарту на выбранном языке программирования. Существуют линты для многих языков.
  2. Превалирование IDE над простыми редакторами. Вы можете выбрать IDE, разработанную для языка, который изучаете. IDE – это интегрированные среды разработки. Они созданы для написания, отладки, компиляции и запуска кода. Jetbrains создают отличные IDE, такие как Webstorm и IntelliJ. Также есть NetBeans, Komodo, Qt, Android Studio, XCode (поставляется с Mac), etc.
  3. Чтение кода вслух. Это полезно, когда вы ищете семантическую ошибку. Читая свой код вслух, есть большая вероятность, что вы зачитаете и ошибку.
  4. Чтение логов. Когда компилятор отмечает Error, обязательно посмотрите, где он находится.

Двигаемся дальше

Поздравляем! Слово «ошибка» уже привычно для вас, равно как и «отладка программы». В качестве новичка вы можете изучать кодинг по книгам, онлайн-урокам или видео. И даже чужой код вам теперь не страшен :)

В процессе кодинга измените что-нибудь, чтобы понять, как он работает. Но будьте уверены в том, что сами написали.

Викторина

  1. Какая ошибка допущена в фрагменте кода Python ниже?
items = [0,1,2,3,4,5]
print items[8]
//комментарий: элементы здесь представляют собой массив с шестью элементами. Например, чтобы получить 4-й элемент, вы будете использовать [3]. Мы начинаем отсчет с 0.
  1. Какая ошибка допущена в фрагменте кода Python ниже?
input = Hippo'
if input == 'Hippo':
  print 'Hello, Hippo'

Ответы на вопросы

  1. Ошибка выполнения: ошибка индекса вне диапазона.

2. Синтаксическая ошибка: Отсутствует стартовая кавычка в первой строке.

HAYL, для начало сделайте очистку проекта(решение), потом пересобрать проект(решение).
или
попробуйте создать такой же новый проект.
Перенесите код из старого проекта.

Или попробуйте так

Способ 1. Попробуйте запустить Microsoft Visual Studio от имени администратора
Как бы просто это ни звучало, в ряде случаев это было доказано как решение для ошибки 0x80004005 в Microsoft Visual Studio. Просто щелкните правой кнопкой мыши значок Visual Studio и выберите “Запуск от имени администратора“.

Способ 2. Попробуйте запустить VS IDE в безопасном режиме и восстановить настройки по умолчанию
Как утверждает Microsoft, это один из лучших методов, который можно использовать при решении любых проблем с Visual Studio. Просто откройте командную строку Visual Studio и выполните эти команды:

Devenv.exe /SafeMode

Devenv.exe /ResetSettings

Способ 3. Проверьте, доступны ли все файлы, включенные в проект Visual Studio
Если при открытии сохраненного проекта возникает ошибка 0x80004005, велика вероятность того, что некоторые файлы проекта были удалены, переименованы или в настоящее время недоступны.

Способ 4. Убедитесь, что ваш проект VS совместим с установленной версией Visual Studio
Если ошибка 0x80004005 также может возникнуть при попытке загрузить проект, созданный с использованием более новой версии Visual Studio.

Недавно мы рассказали о том, как начать писать программы на JavaScript:

  • что такое HTML и JavaScript;
  • из чего состоят скрипты;
  • как и где их выполнять и куда вставлять;
  • где искать готовые решения и что с ними потом делать;
  • как работать с разными элементами и обрабатывать нажатия клавиш.

Теперь шагнём дальше — изучим отладку скриптов в браузере и посмотрим, чем она может нам помочь.

Что такое отладка

Отладка — это поиск и исправление ошибок в программе. Например, мы написали скрипт, добавили его на страницу, настроили запуск по нажатию кнопки — а при нажатии ничего не происходит. При этом в консоли нет никаких ошибок — все команды верные, браузер просто что-то делает, а результата нет. Отладка нужна как раз для того, чтобы найти ошибку и исправить её.

Варварская отладка

Самый примитивный вариант отладки — добавить в код на JavaScript метод console.log(), поместив в скобки нужные данные для отладки. Console.log() — это просто способ вывести в консоль какой-нибудь текст. 

Например, внутри функции можно сказать: console.log(‘Вызвана такая-то функция’) — и в нужный момент мы увидим, что функция вызвалась (или нет). 

Минус этого подхода в том, что в коде появляется много отладочного мусора. А ещё, если мы не предусмотрели логирование для какой-то функции, то мы не поймаем в ней ошибку. 

К счастью, помимо console.log() человечество изобрело много удобных инструментов отладки. 

Что нужно для отладки

Для несложных проектов на JavaScript проще всего использовать встроенный отладчик в браузере Google Chrome. Единственное ограничение — он работает только с файлами скриптов, а не со встроенным в страницу кодом. Это значит, что если код скрипта находится внутри HTML-файла внутри тега <script>, то отладка не сработает.

Чтобы открыть панель отладки в Chrome, нажимаем ⌘+⌥+I и переходим на вкладку Sources (Источники):

Как поймать баг в коде: отладка в браузере

Слева находится панель файлов, доступных с текущей страницы, в середине появится код нашего скрипта, а слева — панель текущего состояния кода. Пока звучит сложно, но с практикой всё станет яснее

Открываем скрипт

Допустим, мы хотим посмотреть, как работает скрипт из задачи про выпечку и как он перебирает все варианты. 

Всё, что у нас есть, — это код. Чтобы мы смогли его отладить, его нужно положить в отдельный файл скрипта, присоединить к HTML-документу и запустить в браузере. 

Открываем любой текстовый редактор, например Sublime Text, вставляем код скрипта и сохраняем файл как temp.js. Имя может быть любым, а после точки всегда должно стоять js — так браузер поймёт, что перед нами скрипт.

После этого в новом файле вставляем шаблон пустой HTML-страницы и подключаем наш скрипт — добавляем в раздел <body> такую строку:

<script type="text/javascript" src="temp.js"></script>

Получиться должно что-то вроде такого:

<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
	<script type="text/javascript" src="temp.js"></script>
</body>
</html>

Сохраняем этот код как HTML-файл, например index.html, и кладём в ту же папку, что и скрипт. Теперь заходим в папку и дважды щёлкаем по HTML-файлу, чтобы открыть эту страницу в браузере:

Как поймать баг в коде: отладка в браузере

На странице ничего нет, но нам нужна не страница, а скрипт, поэтому находим слева наш файл temp.js и нажимаем на него — откроется код скрипта. Теперь можно начинать отладку:

Как поймать баг в коде: отладка в браузере

Добавляем точки остановки

Точка остановки — это место, в котором наш скрипт должен остановиться и ждать дальнейших действий программиста. Их ещё называют брейкпоинты, от английского breakpoint — точка, где всё останавливается. 

Когда скрипт доходит до этой точки, он ставит скрипт на паузу. При этом все данные и значения переменных скрипта остаются в памяти — в них можно заглянуть.

Брейкпоинт нужен для того, чтобы выполнить скрипт по шагам, начиная с первой команды. Чтобы его установить, нажимаем на номер строки с первой командой — в нашем случае это строка 2:

Как поймать баг в коде: отладка в браузере

Обновим страницу и увидим, что скрипт начал работу и остановился. Но он остановился не на второй строке, а на шестой — всё потому, что это первая строка в скрипте, где происходит какое-то действие. Дело в том, что просто объявление новых переменных не влияет на работу скрипта, поэтому он ищет первую команду с действием. В нашем случае — это цикл for:

Как поймать баг в коде: отладка в браузере

Пошаговая отладка

Чтобы посмотреть на работу скрипта по шагам, надо нажимать F9 или стрелку вправо с точкой на панели отладки:

Как поймать баг в коде: отладка в браузере

Каждый раз, как мы будем нажимать F9 или эту кнопку, скрипт будет переходить к следующей команде, выполнять её и снова становиться на паузу:

Как поймать баг в коде: отладка в браузере

Добавляем переменные для отслеживания

Если просто выполнять скрипт по шагам, то мы увидим, какие команды и в каком порядке выполняются, но не будем знать, какие значения лежат в переменных на каждом шагу. Их можно увидеть, просто наведя курсор на любую переменную — над ней появится всплывающая подсказка с текущим значением. Но так работать неудобно — проще сразу видеть значения всех переменных.

Чтобы добавить переменную и видеть её значение во время выполнения, в панели отладки в разделе Watch нажимаем плюсик, вводим имя переменной, выбираем её из списка и нажимаем энтер:

Как поймать баг в коде: отладка в браузере

Теперь видно, что на этом шаге значение переменной a равно нулю:

Как поймать баг в коде: отладка в браузере

Точно так же добавим остальные переменные: i, b, c. Так мы увидим, что первые два цикла только начались, а внутренний прошёл уже три итерации:

Как поймать баг в коде: отладка в браузере

Так, нажимая постоянно F9, мы прогоним весь скрипт до конца и посмотрим, при каких значениях какие условия выполняются и как находится решение:

Как поймать баг в коде: отладка в браузере

Но у такого подхода есть минус — если вложенных циклов много или скрипт очень большой, то на пошаговое выполнение уйдёт много времени. Чтобы не перебирать всё вручную, ставят дополнительные брейкпойнты в нужных местах.

Отладка брейкпойнтами

Допустим, нам важно понять, в какой момент скрипт находит и выдаёт решение. Глядя в код, мы понимаем, что как только скрипт дошёл до команды console.log() — он нашёл очередное решение. Это значит, что мы можем поставить брейкпоинт только на эту строчку и не прогонять вручную весь скрипт: он сам остановится, когда дойдёт до неё, а мы сможем посмотреть значения переменных в этот момент.

Для этого:

  1. Нажимаем снова на строку 2 и убираем предыдущую точку остановки.
  2. Ставим брейкпоинт на строку 20 — там, где происходит вывод решения в консоль. 
  3. Нажимаем F8. 

После этого скрипт продолжит работу сам и снова остановится, как только дойдёт до этой строки. Обратите внимание на значения переменных — они меняются к каждой остановке, а значит, скрипт работает как обычно, но останавливается в нужном нам месте:

Как поймать баг в коде: отладка в браузере

Таких точек остановки можно поставить сколько угодно и в любой момент — на каждой из них отладчик остановится и покажет текущее состояние скрипта.

Зачем это всё

Отладка нужна, чтобы найти ошибки в программе. Если мы видим, что на очередном шаге в переменной находится не то, что мы ожидали увидеть, значит, что-то в коде идёт не так. Мы ставим брейкпоинт на начало нужных команд, запускаем отладку и находим команду, которая приводит к ошибке.

В следующей статье мы покажем на примере с реальным кодом, как отладка помогает находить и исправлять такие ошибки. Подпишитесь, чтобы не пропустить это.

Вёрстка:

Кирилл Климентьев

Возможно, вам также будет интересно:

  • Что такое профессиональная ошибка медицинского работника
  • Что такое произошла ошибка безопасности при добавлении аудио
  • Что такое протокол ошибок какая информация в нем содержится
  • Что такое произошла ошибка undefined
  • Что такое протокол коррекции ошибок

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии