Отладка с параметрами командной строки в Visual Studio

Я занимаюсь разработкой приложения для командной строки C++ в Visual Studio, и мне нужно отладить его с помощью аргументов командной строки. Сейчас я просто запускаю сгенерированный EXE-файл с нужными мне аргументами (вот так program.exe -file.txt), но таким образом я не могу отладить. Где-нибудь я могу указать аргументы для отладки?

14 ответов

Решение

Да, это в разделе "Отладка" на странице свойств проекта.

В VS с 2008 года: щелкните правой кнопкой мыши project, выбирать propertiesиди к Debugging раздел - есть поле дляCommand Arguments". (Совет: нет solution, но project)

Здесь можно найти ответы на часто задаваемые вопросы по отладке Mozilla в Windows.

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

Это выглядит следующим образом для Visual Studio 8 или 9

 devenv / debugexe 'имя программы' 'аргументы программы'

Также возможно иметь действие проводника для запуска программы в отладчике Visual Studio.

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

Microsoft Visual Studio Ultima 2013.

Вы можете просто перейти в меню DEBUG → Основные свойстваСвойства конфигурацииОтладка, а затем вы увидите поле для аргументов командной строки.

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

В раскрывающемся меню конфигурации выберите: Все конфигурации и введите входные аргументы (каждый аргумент разделяется пробелом).

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

В Visual Studio 2022 возможность указать «Аргументы командной строки» была перемещена в «Запуск пользовательского интерфейса профилей» (снимок экрана ниже).

Вы можете открыть его, щелкнув проект правой кнопкой мыши> свойства> Отладка> «Открыть пользовательский интерфейс профилей запуска отладки»> Аргументы командной строки


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

В VS 2022 можно отлаживать любой исполняемый файл. Откройте папку, содержащую файл .exe

  • Щелкните правой кнопкой мыши файл .exe и выберите «Установить как элемент автозагрузки».
  • Снова щелкните правой кнопкой мыши файл .exe и нажмите «Открыть параметры отладки и запуска».
  • Добавьте аргументы в launch_schema.json , например
      {
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "ffprobe.exe",
      "projectTarget": "",
      "name": "ffprobe.exe",
      "args": [ "C:\\Temp\\test-file" ]
    }
  ]
}

В VS 2015 и более поздних версиях используйте расширение аргументов Smart Command Line. Этот плагин добавляет окно, которое позволяет вам включать и выключать аргументы:

Интерфейс аргументы Smart Command Line

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

В Visual Studio 2017 с консольным приложением.net выполните следующие действия:

Щелкните правой кнопкой мыши в окне "Проект в решении", выберите "Свойства", затем "Отладка" (слева), введите аргументы в поле "Аргументы приложения".

Обратите внимание, что они должны быть разделены пробелами.

Щелкните правой кнопкой мыши на окне Project in Solution VS, выберите "Debugging" (слева), введите аргументы в поле "Command Arguments":

Это может помочь некоторым людям, у которых все еще есть проблемы. Я использую Visual Studio 2015 и могу передавать аргументы только при изменении определения argv,

Вместо

int main(int argc, char **argv){
}

Я должен был использовать

int main(int argc, char *argv[]){
}

Я не знаю, почему это было необходимо, но это работает.

Я нашел некоторые старые аргументы командной строки, хранящиеся в файле в исходной папке моего стартап-проекта. Удаление этого файла не помогло, Visual Studio вернула его мне. Мне пришлось отредактировать аргументы в файле.

Значения в файле не отображались в VS, свойствах проекта, отладке. Ввод значений туда добавлял их к значениям в таинственном MyStartUpProject.csproj.userфайл.

В Visual Studio 2010 щелкните проект правой кнопкой мыши, выберите " Свойства", щелкните раздел настройки свойств на левой панели, затем нажмите " Отладка", а затем на правой панели появится поле для аргументов команды.

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

Для тех, кто использует VS2022 и у вас нет launchSchema.json, как упоминалось выше, есть решение для вставки argsс использованием launchSettings.json.

введите файл и вставьте свои аргументы, используя "commandLineArgs": "аргумент здесь ",

это сработало для меня.

Помимо добавления параметров в свойства запуска проекта, отладчик можно подключить к работающей программе в любой момент после ее запуска. Звонок вDebugBreakили чтобы__debugbreakможно добавить в код.
https://learn.microsoft.com/en-us/visualstudio/debugger/debugbreak-and-debugbreak?view=vs-2022
Таким образом, программа сломается и будет ждать подключения отладчика или игнорировать его. Таким образом, отладчик будет подключен именно там, где он вам нужен.
Другой способ — запустить программу и подключить отладчик во время выполнения как собственный, .NET или Script, проверить меню отладчика в Visual Studio. Таким образом, вы, вероятно, не будете уверены, какой код запускается в момент подключения отладчика, но это не всегда необходимо.
Но я бы также рассмотрел возможность определения именно тех фрагментов кода, которые я хочу отлаживать, а затем проведения модульных тестов. Таким образом, гораздо проще и быстрее отлаживать небольшие фрагменты модульных тестов.

Другие вопросы по тегам