Использовать Console2 для отладки Visual Studio? - PullRequest
30 голосов
/ 03 ноября 2010

Есть ли способ использовать популярную замену Console2 cmd.exe для отладки Visual Studio?Другими словами, когда я отлаживаю консольное приложение под VS, я хочу, чтобы оно использовало Console2 вместо cmd.exe.

Ответы [ 2 ]

8 голосов
/ 31 мая 2011

Интересный вопрос.Я посмотрел на это, есть несколько вариантов, но ни один из них не хорош.

Console.exe принимает аргументы, поэтому можно запустить его с определенной вкладки и выполнить произвольный процесс.Однако этот процесс всегда будет выполняться внутри собственного cmd.exe;например, если ваша программа - c: \ my.exe, и вы запускаете Console, когда console.exe -t tabname -r c:\myexe Console2 внутренне вызывает CreateProcess( ... cmd.exe c:\my.exe ... ), в результате вы даже не можете видеть вывод my.exe.Это легко решить, хотя: запустите его как console.exe -t tabname -r "/k c:\myexe": ключ / k делает cmd.exe активным, и вы можете видеть стандартный вывод вашей программы.(Я просмотрел источник, но не смог найти способ «прикрепить» вкладку к запущенному в данный момент экземпляру консоли, поэтому запуск с аргументами всегда создаст новый экземпляр, не уверен, что это то, что вы ищете?

Вы можете легко изменить свойства отладки проекта, чтобы отразить вышеперечисленное:

Command: /path/to/console.exe
Command Arguments: -t tabname -r "/k $(TargetPath)"

При запуске вашего exe изнутри VS он запустит ваш exe во время сеанса консоли. Однако отладка не будет работатьпоскольку VS будет пытаться отлаживать console.exe, а не my.exe, поскольку это теперь другой процесс. Размещение DebugBreak(); в качестве первой строки в main () вашего exe-файла решит эту проблему, так как предоставит вам возможностьотладка вашего exe. В общем, это может быть слишком хлопотно для достижения того, чего вы хотите, но я не думаю, что есть другой способ: консоль всегда порождает новый процесс, поэтому единственный способ отладить его - этоподключите к нему отладчик после запуска этого процесса.

0 голосов
/ 11 марта 2014

Скотт Хансельман написал об этом в блоге .

Он предлагает использовать это значение для Настройки консоли> вкладки> Главное> Оболочка :

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86

К сожалению, это не работает для Visual Studio Express 2010, в которой отсутствует файл vcvarsall.bat .

...