Как получить доступ к настройкам отладки и запуска, если они выделены серым цветом?

#c #visual-studio #cmake

#c #visual-studio #cmake

Вопрос:

Я пытаюсь отредактировать свои настройки запуска для проекта CMake в Visual Studio, но опция выделена серым цветом. Я могу вручную открыть файл launch.vs.json, но настройки там не будут работать.

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

Я использую конфигурацию x64-Debug.

Вот как launch.vs.json выглядит для меня:

 {
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "name": "CMakeLists.txt",
      "args": [
        "first-argument"
      ],
      "currentDir": "C:\repos\myproject"
    }
  ]
}
  

Поскольку тип конфигурации «по умолчанию», я бы предположил, что он применяется для любой конфигурации, которая не настроена. Но это не так, потому что мой «первый аргумент» не прочитан.

 int main(int argc, char* argv[])
{
    if (argc>1)
    {
        cout << argv[1];
        exit(EXIT_SUCCESS);
    }
    else
    {
        exit(EXIT_FAILURE);
    }
}
  

Приведенное выше приводит к сбою.

Как правильно настроить параметры отладки и как отключить настройки отладки и запуска?

Ответ №1:

В документации Configure CMake debugging sessions говорится, что

Если у вас не выбрана цель отладки, этот параметр отображается серым цветом.

Запуск конфигурации x64-debug звучит так, будто опция не должна быть выделена серым цветом, но это все равно так, потому что вы отлаживаете текущий документ в качестве целевого объекта, который Visual Studio не считает реальной целью. Это означает, что текущий документ не является ни отладочным, ни целевым выпуском, поэтому опция выделена серым цветом, даже если вы запускаете его с конфигурацией с именем x64-Debug .

Реальные цели имеют выпадающее меню справа, обычно с одним пунктом, в котором упоминается тип выбранной цели.

Это означает, что вам нужно выбрать реальную цель, которая должна быть чем-то вроде myproject.exe для тебя.

Согласно странице документации launch.vs.json schema reference (C ), "type": "default" указывает, является ли проект библиотекой или исполняемым файлом, а default просто означает, что это исполняемый файл. Это не имеет никакого отношения к конфигурации по умолчанию.

Соответствующий параметр для привязки конфигураций отладки к целям — это projectTarget , который в вашем случае не установлен. Возможно, раньше по умолчанию эта конфигурация была доступна для всех целевых объектов, включая виртуальный текущий документ, но это была бы недокументированная функция, которая неожиданно устарела без уведомления в новой версии Visual Studio. Это может объяснить, почему раньше это работало, но больше не работает.

В соответствии со launch.vs.json схемой:

projectTarget должно уже существовать и соответствовать имени в раскрывающемся списке Debug Target.

Самый простой способ создать реальную конфигурацию запуска и отладки — это

  1. удалите свою конфигурацию запуска,
  2. выберите реальную цель, например «myproject.exe «, и убедитесь, что в выпадающем меню справа указано «Отладка».
  3. Перейдите в раздел Debug -> Debug и запустите настройки для myproject.exe , который должен открыть launch.vs.json с допустимой конфигурацией, теперь заполните параметр «args» по своему усмотрению.

Ваша окончательная конфигурация, вероятно, должна выглядеть примерно так:

 {
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "myproject.exe (myproject\myproject.exe)",
      "name": "myproject.exe (myproject\myproject.exe)",
      "args": [
        "first-argument"
      ],
      "currentDir": "C:\repos\myproject"
    }
  ]
}
  

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

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

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

Ответ №2:

Ответ для меня заключался в том, что каким-то образом «Элемент запуска» волшебным образом был отменен, поэтому не было контекста для настроек отладки и запуска.

В обозревателе решений щелкните правой кнопкой мыши исполняемый файл, который является целью запуска отладки — в данном случае «myproject (исполняемый файл)» — и выберите Установить в качестве элемента запуска.

Теперь всякий раз, когда этот исполняемый файл выбирается в обозревателе решений, в выпадающем меню Debug появляется опция «Параметры отладки и запуска для myproject».