Невидимая и заблокированная точка останова в Sphere SDK для кода - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь начать работу с сферой Microsoft azure.

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

Я использую последнюю версию кода VS (1.44) с Azure Sphere Extension 20.1 на windows 10. Та же проблема появляется на Linux.

Чтобы воспроизвести ошибку:

  1. Загрузите стартовые проекты с github
  2. Установите расширение сферы Azure для кода Visual Studio.
  3. Откройте папку HelloWorld_HighLevelApp в azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp в Visual Studio Code.
  4. Go на вкладке Отладка и нажмите зеленую кнопку воспроизведения в левом верхнем углу. Рядом с кнопкой должно быть написано Launch for Azure Sphere High-Level Applications (gdb)

Для меня это не ошибка, но консоль вывода показывает:

Deploying image...
Starting debugger....

Process /mnt/apps/1689d8b2-c835-2e27-27ad-e894d6d15fa9/bin/app created; pid = 2233
Listening on port 2345

Remote debugging from host 192.168.35.1, port 54911

Starting CMake Hello World application...

Консоль отладки показывает:

...
Breakpoint 1, main () at ../../main.c:45
45  {
Loaded 'target:/usr/lib/libapplibs.so.0'. Symbols loaded.
Loaded 'target:/lib/libgcc_s.so.1'. Symbols loaded.
Loaded 'target:/usr/lib/libc++runtime.so.1'. Symbols loaded.

Существует ли обходной план / план по устранению проблемы?

Дополнение 1 : Для дополнительного пояснения приведен скриншот с пропущенным совпадением вывода консоли. (точка останова установлена) и пользовательский интерфейс (точка останова не установлена) enter image description here

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Решение :

Наконец-то я обнаружил root причину проблемы. При отладке сферного устройства код Visual Studio немного отличается от обычного c кода.

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

0 голосов
/ 09 апреля 2020

Azure Sphere использует gdbserver для предоставления отладочного канала устройству. Поведение GDB по умолчанию прерывается при входе в main. Это может ввести в заблуждение людей на Windows, которые ожидают, что запуск будет работать с точкой останова, как это обычно происходит в Visual Studio. Для нашего интерфейса с GDB мы намеренно пропускаем точку останова при вводе main в Visual Studio для обеспечения согласованности. На самом деле вы можете увидеть, что точка останова пропущена в окне вывода журнала отладки.

Для кода VS мы также пропускаем точку останова на главном, когда вы находитесь на Windows. Похоже, вы находитесь на Linux из вывода выше. Я не использовал его на Linux в течение нескольких недель, поэтому не могу вспомнить, намеренно ли оно там отличается или нет. Для меня было бы логично прервать вход в main при Linux, поскольку это обычное ожидание при использовании GDB, которое встречается там чаще, чем при Windows. Я проверю, если это умышленно или нет, и отвечу в ответ, но я подозреваю, что это так.

...