Как отладить программу командной строки C # - PullRequest
19 голосов
/ 05 сентября 2010

Я пытаюсь построить инструмент командной строки в C # с VS2010.

Мой вопрос: как мне отладить это, как если бы я был winforms.
С winforms я могу шагнутьчерез код смотрите значения на каждом отдельном шаге и т.д ...

Здесь, однако, программа отвечает только тогда, когда я говорю с ним из командной строки.Я не могу начать сеанс отладки, так как это сначала полностью запустит программу.И из-за природы программы она закрывается сама, потому что не было аргументов командной строки.

Таким образом, отладка невозможна.

Что мне нужно сделать здесь?

РЕДАКТИРОВАТЬ: пример, так как кто-то сделал комментарий, который заставляет меня чувствовать, что это объяснение необходимо.

C: \ Path \ To \ File \ file.exe -help

Этопример того, как эта программа адресована.Команда -help дается в той же строке, что и программа.Другими словами, я не могу сначала запустить программу, а затем дать ей команду, пока она работает ... потому что она больше не будет работать.Он запустится, увидит, что у него нет аргументов при запуске, и из-за этого выключился.Вот как работает инструмент командной строки.

  1. Активировать
  2. Обрабатывать возможные аргументы
  3. Выводить результаты
  4. Автоматически отключаться

Это не то, что продолжает работать, пока вы не нажмете маленький крестик в верхнем правом углу.

Ответы [ 6 ]

46 голосов
/ 05 сентября 2010

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

8 голосов
/ 05 сентября 2010

Вы можете добавить вызов к Debugger.Launch к вашему коду запуска.Затем вы можете скомпилировать и запустить свое приложение из командной строки.Вы получите подсказку, спрашивающую, какой отладчик вы хотите подключить (обычно это будет список различных версий Visual Studio, которые вы установили), и все, что вам нужно.параметры строки в свойствах проекта> вкладка «Отладка» - лучший способ работать большую часть времени. Если это не работает для вас, вы должны выяснить почему.)

1 голос
/ 05 сентября 2010

Либо добавьте точку останова к открытию { из Main, либо войдите в программу (меню «Отладка»).В этот момент установите параметр наблюдения для параметра main (аргументы командной строки), выбрав его и либо щелкните правой кнопкой мыши / Add Watch или перетащите параметр в окно просмотра, если оно уже открыто.Дважды щелкните столбец «Значение» в окне «Наблюдение» и задайте для него любое значение.

Примечание: добавленное значение должно быть действительным кодом, т. Е. Для добавления -help в строку [] вам нужно будет набрать new string[] {"-help"} или new [] {"-help"} в зависимости от используемой версии.

Это имеет преимущество перед настройкой параметра на вкладке «Отладка» окна «Свойства» с помощьюразрешить разные параметры для каждого прогона, не возвращаясь в окно свойств.

1 голос
/ 05 сентября 2010

Вам просто нужно добавить точку останова в первой строке основной функции (вы можете сделать это, щелкнув строку в редакторе Visual Studio и нажав F9) и нажав F5, чтобы начать сеанс отладки.

1 голос
/ 05 сентября 2010

Вы можете использовать Visual Studio, чтобы присоединить отладчик к приложению командной строки, как только он будет запущен с правильными аргументами.Я не уверен, что ваше приложение быстро прекратит работу или даст вам возможность подключить отладчик, но если это произойдет, это должно сработать.

Я использую VS2008, но держу пари, что процесс похожв 2010 году:

  1. В VS перейдите на Tools и нажмите Attach to Process
  2. Выберите приложение из списка и нажмите Attach

Теперь VS должен иметь возможность найти свой путь и исправить ошибку.

0 голосов
/ 23 мая 2015

Если у вас есть аргументы командной строки, вам нужно следовать другому маршруту для отладки.Перейти к проекту, а затем выберите свойства.Там вы увидите раздел отладки, а затем зададите необходимые параметры.Так что он позаботится о передаче параметров в программу.Если у вас есть несколько параметров, разделите их пробелом.После этого, если вы отлаживаете, он сразу достигнет точки останова.Для получения дополнительной информации проверьте здесь как отлаживать c # с помощью аргументов командной строки в Visual Studio

...