User Tag List

Показано с 1 по 10 из 20

Тема: Программирование и отладка в VisualStudio Code

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию VS Code: Запуск Unreal по F5

    Хотелка

    Хочется компилить и отлаживать в Unreal Spectrum проекты для Спектрума в Visual Studio Code тем же хоткеем, который я использую для других языков.


    Проблема

    Я давно освоил Visual Studio Code и использую ее, например, для проектов на Python. При этом все мои проекты для Спектрума жили в Sublime Text с расширением Z80Asm от Breeze, и я решил смигрировать их в более привычный VS Code.

    В VS Code есть понятие Build Task, позволяющее запустить только компиляцию workspace (и, вообще говоря, выполнить любую команду shell) и отдельно debugger'ы, свои для каждого типа workspace. Если для языка установлено отладочное расширение, то по F5 (у меня клавиатурная тема от MSVS) workspace компилится при наличии изменений, и сборка запускается в отладчике. А запускать вместо отладчика команду shell (и Unreal Spectrum) нельзя, нужно отладочное расширение. Итого: для Python использую F5, для Z80 - Shift+Ctrl+B, и постоянно путаю их.


    Чуть подробнее

    Для разработки на Z80 есть расширение Z80 Macro-Assembler, которое понимает синтаксис Z80 и имеет еще всяческие фишки (подробнее про это писал камрад sq в статье Как быстро настроить среду разработки на ZX: Visual Studio Code + Z80MacroAsm boilerplate). Однако расширения, позволяющего запускать Unreal Spectrum в качестве отладчика нет.
    Переопределить шоткат F5 для проекта невозможно, глобально переопределить его на Build Task - тоже не выход, потому что оно тогда будет так работать и для всех остальных языков.
    Надо сделать как-то так, чтобы для workspace Z80 F5 вызывал Build Task, в котором можно выполнить команду shell и запустить что хочется, а для других проектов поведение оставалось прежним: компиляция (если есть) и запуск отладчика из расширение.

    На просторах Интернета накопал способ переопределить шоткат для проекта, которым на всякий случай делюсь. Суть способа такая:
    • пользовательские шоткаты переопределяют системные, при этом, если условие when для пользовательского шотката не выполнено, то работает штатный шоткат из клавиатурной схемы;
    • условие вычисляемое, в нем можно использовать настройки, в том числе, и уровня проекта;
    • суть решения: добавляем в проект некоторую кастомную настройку, наличие которой является условием пользовательского шотката на запуск Build Task, а при ее отсутствии работает штатный шоткат VS Code для запуска дебаггера.



    Инструкция

    1. Нажать Shift+Crtl+B (или ваш шоткат для билда) чтобы появилось предложение создать tasks.json. Если дефолтные таски в конфигах самой VS Code уже есть, то, по Вашему вкусу, можно либо добавлять новые таски туда, либо создать в проекте файл .vscode/tasks.json
    2. Вставить в tasks.json пример сборочных тасков из справки extension'а Z80 Macro-Assembler и настроить его на свой вкус. Для настройки шотката интересен только параметр label. Назовем его, например, Compile and run. В параметр command пишется shell-команда, которую хотим прикрутить к шоткату;
    3. Нажать Shift+Ctrl+P (или ваш шоткат для поиска команд) и выполнить Preferences: Open workspace settings (JSON). Добавить в него параметр
      Код:
      "runTaskInsteadOfDebug": true
    4. Нажать Shift+Ctrl+P (или ваш шоткат для поиска команд) и выполнить Preferences: Open Keyboard Shortcuts (JSON). Добавить в него:
      Код:
              {
                  "key": "f5",
                  "command": "workbench.action.tasks.runTask",
                  "when": "config.runTaskInsteadOfDebug && taskCommandsRegistered",
                  "args": "Compile and run"
              }



    Собственно, все. Теперь в проектах, в которых есть .vscode/settings.json с параметром "runTaskInsteadOfDebug": true, по кнопке F5 будет вызываться таск с именем Compile and run, а в проектах без этой опции - отладчик по умолчанию для workspace.


    Например, я себе в проектах Saboteur сделал по F5 сборку и запуск отладочной версии, по Ctrl+F5 - релизной, а по Shift+F5 - только компиляцию без запуска.
    ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.

    Этот пользователь поблагодарил Alex Rider за это полезное сообщение:

    CityAceE(15.01.2024)

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,822
    Спасибо Благодарностей отдано 
    274
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Хочется компилить и отлаживать в Unreal Spectrum проекты для Спектрума в Visual Studio Code тем же хоткеем, который я использую для других языков.
    Так, к слову:
    Помнится для таких целей однажды даже пересобирал среду (это был akelpad), но например purebasic кодить удобней в jaPBe, а что-то ещё - в других средах. Чтоб все работали на одинаковых хоткеях (F5=запуск, F6=запуск с дебагером) сделал специальный ланчер для сред который их запускает, передаёт параметры (чтоб работало "Открыть с помощью") и потом сидит до самого завершения работы как невидимый процесс в памяти и следить за нужными кнопками, отменяя стандартные вызовы среды и заставляя её делать что-то там другое (имитируя нажатия на её родные хоткеи). Поначалу способ казался неудобным, но потом вдруг оценил что достаточно было один раз написать такой ланчер для каждой из нужных прог и после этого не страшны всякие там переустановки и т.д. - ланчер остаётся самим собой и работает как надо.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. "Byte-01" CP/M code to BASIC code
    от Gelip в разделе Программирование
    Ответов: 13
    Последнее: 31.05.2021, 00:47
  2. Отладка монитора на FPGA (Орион-ПРО)
    от andreil в разделе Орион
    Ответов: 12
    Последнее: 14.04.2021, 21:26
  3. Отладка Pentagon-128 (2014)
    от Eraserstp в разделе Pentagon
    Ответов: 154
    Последнее: 21.11.2017, 22:47
  4. Отладка ленинграда (сич-48)
    от DrMoriarty в разделе Ленинград
    Ответов: 86
    Последнее: 14.04.2017, 19:36

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •