Мое приложение Angular не достигает точки останова при отладке? - PullRequest
11 голосов
/ 11 июня 2019

Вроде новичок в Visual Studio Code и приложениях Angular с бэкэндом C # Web API. Нет проблем с достижением точки останова в C #, только не с помощью приложения Angular в VS Code!

Я могу нормально запускать оба приложения в браузере, из терминала, с dotnet run и ng serve НО , когда я нажимаю кнопку отладки для отладки моего приложения, угловые точки останова становятся красными до полого серого!

Отказ от ответственности - Я должен упомянуть, что я изменил много имен файлов и переименовал файл .csproj, потому что я хотел, чтобы приложение отражало мое имя, а не то, которое использовал инструктор. Прежде чем я это сделал, я смог установить точки останова и нажать их в приложении Angular.

Вот что я пробовал.

  1. перезапущен VS Code
  2. нг старт, нг подача
  3. сгенерировал новый файл launch.json (автоматически сгенерированный VS Code) на том же уровне папок, который содержит две мои папки проекта (Ng, .Net)
  4. удалил мой файл рабочей области (кажется, не могу создать новый, не уверен, если мне нужно)

В файле:

error.interceptor.ts

Я пытаюсь проверить обработку этого исключения, сказав:

throw new Exception("Some login error");

в моем методе входа.

Я могу установить точку останова, показанную ниже, но она становится серым кругом и никогда не получает удар, когда я нажимаю Отладка.

enter image description here

Здесь я устанавливаю точки останова

enter image description here

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

enter image description here

и затем в моем методе входа из моего углового приложения мои контрольные точки становятся серыми

enter image description here

Вот мой файл launch.json

{
  // Use IntelliSense to find out which attributes exist for C# debugging
  // Use hover for the description of the existing attributes
  // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
  "version": "0.2.0",
  "configurations": [

    {
      "name": ".NET Core Launch (web)",
      "type": "coreclr",
      "request": "launch",
      "preLaunchTask": "build",
      // If you have changed target frameworks, make sure to update the program path.
      "program": "${workspaceFolder}/Yogabandy.API/bin/Debug/netcoreapp2.2/Yogabandy.API.dll",
      "args": [],
      "cwd": "${workspaceFolder}/Yogabandy.API",
      "stopAtEntry": false,
      "launchBrowser": {
        "enabled": true
      },
      "env": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "sourceFileMap": {
        "/Views": "${workspaceFolder}/Views"
      }
    },
    {
      "name": ".NET Core Attach",
      "type": "coreclr",
      "request": "attach",
      "processId": "${command:pickProcess}"
    }
  ]
}

Также - я вижу много этих строк, когда запускаю консоль отладки. Не знаете, нормально ли это?

Загружен '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/2.2.4/System.Threading.dll'. Модуль был построен без символов. Загружен '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/2.2.4/System.IO.FileSystem.Watcher.dll'. Пропущены символы загрузки. Модуль оптимизирован, и опция отладчика «Просто мой код» включена.

Ответы [ 2 ]

4 голосов
/ 15 июня 2019

Вот что происходит!Это связано с путем к проекту в файле .vscode и необходимостью отладки двух отдельных папок проекта / с одновременно!

$ {workspaceFolder}

У меня есть две папки для приложения

  1. Yogabandy-SPA (угловое приложение)
  2. Yogabandy.API (ASP.Net Core Web API)

Я думал, что лучшее место для файла .vscode - это корневой уровень, и, если у кого-то нет лучшего решения, это, кажется, лучшее место.

enter image description here

Но проблема в том, что необходимо исправить путь к папке рабочей области.

Исправленные пути

"webRoot": "${workspaceFolder}" // old
"webRoot": "${workspaceFolder}/Yogabandy-SPA" // new
"program": "${workspaceFolder}/bin/Debug/netcoreapp2.2/Yogabandy.API.dll" // old
"program": "${workspaceFolder}/Yogabandy.API/bin/Debug/netcoreapp2.2/Yogabandy.API.dll" // new

// removed from the 'server' command so two debuggers don't open, just one
"serverReadyAction": {
  "action": "openExternally",
  "pattern": "^\\s*Now listening on:\\s+(https?://\\S+)"
},

Добавлен состав, чтобы я мог отлаживать оба проекта вместе.

"compounds": [{
  "name": "Server/Client",
  "configurations": ["server", "client"]
}]

У меня все еще небольшая проблема с запуском отладчика.VS Code отображает это ниже, но теперь я могу отлаживать оба приложения вместе и достигать всех точек останова в обоих проектах.enter image description here

Если у кого-то есть лучшее решение, пожалуйста, дайте мне знать.

"compounds": [{
  "name": "Server/Client",
  "configurations": ["server", "client"]
}],
"configurations": [{
    "name": "server",
    "type": "coreclr",
    "request": "launch",
    "preLaunchTask": "build",
    "program": "${workspaceFolder}/Yogabandy.API/bin/Debug/netcoreapp2.2/Yogabandy.API.dll",
    "args": [],
    "cwd": "${workspaceFolder}/Yogabandy.API",
    "stopAtEntry": false,
    "env": {
      "ASPNETCORE_ENVIRONMENT": "Development"
    },
    "sourceFileMap": {
      "/Views": "${workspaceFolder}/Views"
    }
  },
  {
    "type": "chrome",
    "request": "launch",
    "name": "client",
    "url": "http://localhost:4200",
    "webRoot": "${workspaceFolder}/Yogabandy-SPA"
  }
4 голосов
/ 15 июня 2019

Кажется, вы не настроили расширение отладчика Chrome в файле launch.json.из документации vscode :

Нам нужно изначально настроить отладчик.Для этого перейдите в представление «Отладка» ( ctrl + shift + D ) и нажмите кнопку шестеренки, чтобы создать файл конфигурации отладчика launch.json.Выберите Chrome в раскрывающемся списке «Выбор среды».Это создаст файл launch.json в новой папке .vscode в вашем проекте, которая включает в себя конфигурацию для запуска веб-сайта.

Нам нужно сделать одно изменение для нашего примера: изменить порт URL с 8080 до 4200 .Ваш launch.json должен выглядеть следующим образом:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "chrome",
            "request": "launch",
            "name": "Launch Chrome against localhost",
            "url": "http://localhost:4200",
            "webRoot": "${workspaceFolder}"
        }
    ]
}

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

...