Отладка с параметрами командной строки в 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. Этот плагин добавляет окно, которое позволяет вам включать и выключать аргументы:
Расширение дополнительно хранит аргументы в файле 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. Таким образом, вы, вероятно, не будете уверены, какой код запускается в момент подключения отладчика, но это не всегда необходимо.
Но я бы также рассмотрел возможность определения именно тех фрагментов кода, которые я хочу отлаживать, а затем проведения модульных тестов. Таким образом, гораздо проще и быстрее отлаживать небольшие фрагменты модульных тестов.