Visual studio как убрать консоль
Это наверное embarasing вопрос, без сомнения, ответ будет совершенно очевидной.
Я использовал Visual Studio в течение многих лет, но это первый раз, когда я сделал какую-либо разработку консольного приложения.
когда я запускаю приложение, появляется окно консоли, вывод программы, а затем окно закрывается по мере выхода приложения.
есть ли способ либо сохранить его открытым, пока я не проверил вывод, либо просмотреть результаты после окно закрыто?
Если вы работаете без отладки (Ctrl+F5), то по умолчанию он предлагает вам нажать return, чтобы закрыть окно. Если вы хотите использовать отладчик, вы должны поставить точку останова на последней строке.
Правой Кнопкой Мыши на вашем проекте
Свойства>Свойства Конфигурации> Компоновщик - > Система
выберите консоль (/SUBSYSTEM:CONSOLE) в .
теперь попробуйте. он должен работать
вот способ для C / C++:
Меню Отладки Goto ->пресс StartWithoutDebugging
Он будет ждать <ENTER> .
попробуйте позвонить getchar() перед main() возвращает.
(/SUBSYSTEM:CONSOLE) не работал для моего vs2013 (у меня уже был).
"запуск без отладки" не является опцией, так как я не хочу переключаться между отладкой и просмотром вывода.
решение используется в qtcreator до 2.6. Теперь, когда qt растет, vs идет другим путем. Как я помню, в vs2008 нам не нужны такие фокусы.
вот решение, которое (1) не требует никаких изменений кода или точек останова и (2) приостанавливает после завершения работы программы так что вы можете видеть все это было напечатано. Он будет приостановлен после F5 или Ctrl+F5. Основным недостатком является то, что на VS2013 Express (как проверено) он не загружает символы, поэтому отладка очень ограничена.
создать пакетный файл. Я назвал свое runthenpause.bat , со следующими содержание:
в первой строке будет выполняться любая команда, которую вы предоставляете, и до восьми аргументов. Вторая строка будет. пауза.
откройте свойства проекта | свойства конфигурации | отладка.
теперь, когда вы бежите, runthenpause.bat запустит ваше приложение, и после того, как ваше приложение завершится, сделает паузу для вас, чтобы увидеть вывод консоли.
я опубликую обновление, если выясню, как загрузить символы. Я пытался!--5--> per этой но без успеха.
вы можете запустить исполняемый файл из командной строки. Таким образом, вы могли видеть все выходные. Или вы можете сделать что-то вроде этого:
и таким образом окно не будет закрываться, пока вы не введете данные для a переменной.
добавить "/ pause " в поле аргументы команды в разделе отладки в свойствах проекта.
просто нажмите CNTRL + F5, чтобы открыть его во внешнем окне командной строки (Visual Studio не имеет контроля над ним).
Если это не работает, добавьте следующее в конец вашего кода:
это ждать, пока вы нажмете клавишу, чтобы закрыть окно терминала, как только код достигнет конца.
Если вы хотите сделать это в нескольких местах, поставить выше код в метод (например, private void Pause() ) и вызов Pause() каждый раз, когда программа достигает возможного конец.
Я хочу быть честным и сказать вам, что это для программы кейлоггер, НО я не собираюсь взломать кого-то. Это для маленького школьного проекта, который я хочу сделать, чтобы показать опасности хакеров. (Я думал, что было бы очень круто показать что-то подобное в школе.)
Я надеюсь, что вы поможете мне с этим.
Так. Вот код, который я написал, посмотрев его в Google. (Не обращайте внимания на все заметки о намерениях.)
Как видите, я включил Windows.h и написал FreeConsole (); в основном.
Да, я вижу появившееся окно и сразу исчезаю. Но, похоже, сразу после этого открывается новая консоль, которая просто пуста. (С пустым, я имею в виду: «Нажмите любую клавишу, чтобы продолжить ..» Я думаю о том, имеет ли это какое-либо отношение к «system (« PAUSE »)»)
Поэтому я хочу знать, почему он открывает новую консоль, а не просто создает и скрывает первую.
Решение
Чтобы буквально скрыть / показать окно консоли по требованию, вы можете использовать следующие функции:
Можно скрыть / показать консоль, используя Витрина . GetConsoleWindow извлекает дескриптор окна, используемый консолью
IsWindowVisible может использоваться для проверки, является ли окно (в этом случае консоль) видимым или нет.
Другие решения
Поэтому я хочу знать, почему он открывает новую консоль, а не просто создает и скрывает первую.
Консольное приложение фактически не создает консоль, оно просто запускается в одной. Если вы запускаете исполняемый файл из Проводника, Windows создает консоль для его запуска. Когда вы вызываете FreeConsole , она не закрывает новую консоль, просто отсоединяет ваш процесс от нее.
Как отмечалось в комментариях к WhozCraig, создайте обычное приложение для Windows и не создавайте окна.
На мой взгляд, такой подход лучше, чем использование WinMain потому что он работает надежно, и вы не делаете свою платформу C ++ Code зависимой.
Это просто. FreeConsole () API сделает эту магию для вас
Просто сделайте это при запуске
Это вернет дескриптор окна (HWND) ShowWindow() который, в свою очередь, будет скрывать это. Это решение только для систем Windows.
Это правильный ответ на вопрос, даже если он не помечен как он.
редактировать: возможное решение / взлом может быть установить (в Visual Studio) Linker-> System-> SubSystem на «Windows (/ SUBSYSTEM: WINDOWS)» вместо «Консоль (/ SUBSYSTEM: CONSOLE)». Это, вероятно, не оптимально, однако.
Чтобы задать параметры отладчика Visual Studio, выберите Сервис > Параметры и в окне Отладка установите или снимите флажки рядом с параметрами Общие. Чтобы восстановить параметры по умолчанию, выберите Сервис > Импорт и экспорт параметров > Сбросить все параметры. Если требуется сбросить несколько параметров, сохраните их в мастере импорта и экспорта параметров перед внесением изменений, которые нужно протестировать, а затем импортируйте сохраненные параметры.
В частности, можно задать Общие параметры:
Запрашивать подтверждение перед удалением всех точек останова Запрашивает подтверждение перед выполнением команды Удалить все точки останова.
Прерывать все процессы при прерывании одного При возникновении прерывания одновременно прерываются все процессы, к которым присоединен отладчик.
Прерывать выполнение, когда исключения пересекают границу домена приложения или границу между управляемым и машинным кодом При отладке управляемого кода или в смешанном режиме отладки в среде CLR могут перехватываться исключения, пересекающие границы домена приложений или границы между управляемым и машинным кодом при следующих условиях:
Машинный код вызывает управляемый код с использованием COM-взаимодействия; при этом в управляемом коде возникает исключение. См. Знакомство с COM-взаимодействием.
Управляемый код, выполняемый в домене приложения 1, вызывает управляемый код домена приложения 2; при этом в управляемом коде домена приложения 2 возникает исключение. См. Программирование с использованием доменов приложений и сборок.
Код вызывает функцию с помощью отражения, и эта функция создает исключение. См. Отражение.
В условиях 2 и 3 исключения иногда перехватываются управляемым кодом в библиотеке mscorlib вместо среды CLR. Этот параметр не влияет на прерывание по исключениям, перехватываемым с помощью библиотеки mscorlib .
Включить отладку на уровне адреса Предоставляет дополнительные возможности для отладки на уровне адреса (окно Дизассемблированный код, окно Регистры и точки останова с указанием адреса).
- Показывать дизассемблированный код, если исходный код недоступен Если вы будете выполнять отладку кода при отсутствии исходного кода, будет автоматически отображаться окно Дизассемблированный код.
Включить фильтры точек останова Позволяет задать фильтры точек останова, чтобы последние оказывали воздействие только на определенные процессы, потоки и компьютеры.
Использовать новое вспомогательное приложение по обработке исключений Включает вспомогательное приложение для исключений, которое заменяет помощник по исключениям. (Вспомогательное приложение для исключений поддерживается, начиная с Studio 2017)
Для управляемого кода этот параметр раньше назывался Включить помощник по исключениям.
Включить только мой код В отладчике отображается и доступен для входа только код пользователя ("мой код"). Системный код игнорируется, так же как и любой другой код, который является оптимизированным или не содержит символов отладки.
- Выводить предупреждение, если пользовательский код отсутствует при запуске (только управляемый код) При запуске отладки с включенным режимом "Только мой код" выводится предупреждение в случае отсутствия кода пользователя ("моего кода").
Обход свойств и операторов (только управляемый код) Запрещает отладчику при пошаговом выполнении заходить в свойства и операторы в управляемом коде.
Включить вычисление свойств и другие неявные вызовы функций Включение автоматического вычисления свойств и неявных вызовов функций в окнах переменных и диалоговом окне Быстрая проверка.
Включить поддержку сервера системы управления версиями Дает отладчику Visual Studio указание получать исходные файлы с серверов системы управления версиями, реализующих протокол SrcSrv ( srcsrv.dll ). Team Foundation Server и инструменты отладки для Windows — два исходных сервера, которые реализуют этот протокол. Дополнительные сведения о настройке SrcSrv см. в документации по SrcSrv. Кроме того, см. статью Указание файлов символов (PDB) и исходных файлов.
Так как при чтении PDB-файлов может выполняться произвольный код в файлах, убедитесь, что вы доверяете серверу.
Разрешить выполнение частично доверенных сборок (только управляемых) на исходном сервере Если поддержка сервера системы управления версиями включена, этот параметр переопределяет поведение по умолчанию для неизвлечения исходного кода для частично доверенных сборок.
Всегда выполнять ненадежные команды исходного сервера без запроса Если поддержка исходного сервера включена, этот параметр переопределяет поведение по умолчанию, который подразумевает уведомления, если запускается недоверенная команда.
Включите поддержку ссылок на источник Указывает отладчику Visual Studio загрузить исходные файлы для файлов PDB, которые содержат сведения о ссылке на источник. Дополнительные сведения о ссылках на источник см. в разделе Спецификация ссылок на источник.
- Вернуться к проверке подлинности с помощью диспетчера учетных данных Git для всех запросов со ссылкой на источник Если включена поддержка ссылок на источник и запрос ссылки на источник не проходит проверку подлинности, Visual Studio вызывает диспетчер учетных данных Git.
Выделять всю исходную строку для точек останова и текущего оператора (только C++). При выделении точки останова или текущего оператора отладчик выделяет всю строку.
Требовать точного соответствия исходной версии файлов Дает отладчику указание проверять во время отладки, соответствует ли исходный файл версии исходного кода, использованной для сборки исполняемого файла. Если версия не соответствует, отображается запрос на поиск соответствующего исходного кода. Если соответствующий исходный код не найден, в процессе отладки исходный код не отображается.
Показывать базовую структуру объектов в окнах переменных Отключение всех пользовательских настроек представления структуры объектов. Дополнительные сведения см. в статье Создание настраиваемых представлений управляемых объектов.
Отключать JIT-оптимизацию при загрузке модуля (только управляемый код) Отключение JIT-оптимизации управляемого кода при загрузке модуля (и JIT-компиляции), если присоединен отладчик. Отключение оптимизации позволяет упростить процесс отладки некоторых проблем, однако может отрицательно сказаться на производительности. В режиме "Только мой код" при отключении JIT-оптимизации в коде пользователя ("Мой код") может отображаться посторонний код. Дополнительные сведения см. в разделе JIT-оптимизация и отладка.
Включить использование многоцелевого отладчика JavaScript для отладки JavaScript в соответствующих целевых объектах (требуется перезагрузка при отладке). Одновременное подключение к браузеру и серверной части для отлаживания кода, выполняемого на клиенте и сервере, непосредственно в редакторе.
Чтобы посмотреть, какие символы доступны в таблице экспорта библиотеки DLL, воспользуйтесь командой dumpbin /exports . Символы доступны для любой 32-разрядной системной библиотеки DLL. В выходных данных команды dumpbin /exports можно увидеть точное имя функции, включая символы, отличные от буквенно-цифровых. Это полезно при задании точки останова в функции. Имена функций из таблиц экспорта библиотеки DLL могут отображаться в отладчике в сокращенном виде. Вызовы функций перечисляются в том порядке, в котором эти функции вызываются, при этом текущая функция (наиболее глубоко вложенная) располагается наверху. Дополнительные сведения см. в разделе dumpbin /exports.
Показать параллельную диаграмму с накоплением сверху вниз Определяет направление, в котором отображаются стеки в окне Параллельные стеки.
Игнорировать исключения обращения к памяти GPU, если записываемые данные не изменили значение Пропускает состояния гонки, обнаруженные во время отладки, если данные не были изменены. Дополнительные сведения см. в разделе Отладка кода GPU.
Использовать режим совместимости управляемого кода Меняет ядро отладки по умолчанию на предыдущую версию для поддержки следующих сценариев.
Необходимо включить операцию "Изменить и продолжить" для проектов C++ в смешанном режиме отладки.
Выбор режима совместимости управляемого кода приводит к отключению некоторых возможностей, реализованных только в ядре отладки по умолчанию. Модуль отладки прежних версий был заменен в Visual Studio 2012.
Предупреждать об использовании настраиваемых визуализаторов отладчика для потенциально небезопасных процессов (только для управляемого режима) Visual Studio предупреждает об использовании настраиваемого визуализатора отладчика, выполняющего код в отлаживаемом процессе, так как выполняемый код может быть небезопасным.
Включить распределитель кучи отладки Windows (только собственный код) Позволяет отладочной куче Windows улучшать диагностику кучи. Включение этого параметра повлияет на производительность отладки.
Включить средства отладки пользовательского интерфейса для XAML При запуске отладки (клавиша F5) поддерживаемого типа проекта появятся окна динамического визуального дерева и динамического обозревателя свойств. Дополнительные сведения см. в разделе Просмотр свойств XAML во время отладки.
Предварительный просмотр выбранных элементов в динамическом визуальном дереве Элемент XAML, контекст которого выбран, также выбирается в окне Динамическое визуальное дерево.
Показать средства среды выполнения в приложении Отображает команды динамического визуального дерева на панели инструментов в главном окне отлаживаемого приложения XAML. Этот параметр появился в Visual Studio 2015 с обновлением 2.
Включить горячую перезагрузку XAML. Позволяет использовать функцию горячей перезагрузки XAML с кодом XAML при запуске приложения. (Эта функция ранее называлась функцией XAML "Изменить и продолжить".)
Включить только мой код XAML. Начиная с Visual Studio 2019 версии 16.4, динамическое визуальное дерево по умолчанию показывает только код XAML, который классифицируется как пользовательский код. Если этот параметр отключен, весь созданный код XAML отображается в средстве.
Отключить режим выбора при выборе элемента. Начиная с Visual Studio 2019 версии 16.4, кнопка выбора элемента панели инструментов в приложении (Включить выделение) отключается, если элемент выбран. Если вы отключаете этот параметр, выбор элементов остается включенным, пока не будет снова нажата кнопка панели инструментов в приложении.
Применить Горячую перезагрузку XAML при сохранении документа. Начиная с Visual Studio 2019 версии 16.6, при сохранении документа применяется горячая перезагрузка XAML.
Включить средства диагностики при отладке При отладке появится окно Средства диагностики.
Показывать подсказку с затраченным временем при отладке При отладке окно кода отображает время, прошедшее с момента вызова этого метода.
Включить функцию "Изменить и продолжить" Включает функцию "Изменить и продолжить" при отладке.
Включить функцию "Изменить машинный код и продолжить" При отладке машинного кода C++ можно использовать функцию "Изменить и продолжить". Дополнительные сведения см. в статье Изменить и продолжить (C++).
Применить изменения при продолжении (только машинный код) Visual Studio автоматически компилирует и применяет необработанные изменения кода, внесенные при продолжении процесса из состояния приостановки. Если этот параметр не выбран, можно применить изменения с помощью пункта Применить изменения кода в меню Отладка.
Предупреждать об устаревшем коде (только машинный код) Получать предупреждения об устаревшем коде.
Показывать кнопку "Выполнение до щелчка" в редакторе во время отладки. Если этот параметр выбран, при отладке будет отображаться кнопка Выполнение до щелчка.
Автоматически закрыть консоль при остановке отладки Указывает Visual Studio закрыть консоль в конце сеанса отладки.
Включить быстрое вычисление выражений (только управляемый код) . Позволяет отладчику попытаться ускорить вычисление, имитируя выполнение простых свойств и методов.
Загрузить символы отладки во внешнем процессе (только машинный код). Включение оптимизации памяти во время отладки.
Переводить приложение Visual Studio на передний план при срабатывании точки останова в отладчике. Переключение Visual Studio на передний план при приостановке в отладчике.
Параметры, доступные в Visual Studio предыдущих версий
Если вы используете более раннюю версию Visual Studio, у вас могут быть дополнительные параметры.
Включить средства разработчика Microsoft Edge для приложений JavaScript UWP (экспериментальная функция) Включает средства разработчика для приложений JavaScript UWP в Microsoft Edge.
Включить помощник по исключениям Для управляемого кода включает помощник по исключениям. Начиная с Visual Studio 2017, вспомогательное приложение по исключениям заменяет помощник по исключениям.
Очищать стек вызовов от кадров необработанных исключений При выборе этого параметра стек вызовов в окне Стек вызовов откатывается до точки перед возникновением необработанного исключения.
Использовать экспериментальный способ для запуска отладки JavaScript в Chrome при запуске Visual Studio от имени администратора Указывает Visual Studio, что нужно использовать новый метод запуска Chrome во время отладки JavaScript.
Предупреждать об отсутствии символов при запуске (только машинный код) При отладке программы, для которой у отладчика нет символьных данных, отображается диалоговое окно с предупреждением.
Предупреждать, если отладка скриптов запрещена при запуске При запуске отладчика с отключенной отладкой скриптов отображается диалоговое окно с предупреждением.
Используйте режим совместимости машинного кода При выборе этого параметра отладчик использует собственный отладчик Visual Studio 2010 вместо нового собственного отладчика.
Это, вероятно, вопрос о запуске, поскольку, несомненно, ответ ослепительно очевиден.
Я использовал Visual Studio в течение многих лет, но это первый раз, когда я создал любую консольную программу.
Когда я запускаю приложение, появляется окно консоли, появляется выход программы, а затем окно закрывается по мере выхода приложения.
Есть ли способ открыть его, пока я не проверил вывод или не просмотрел результаты после закрытия окна?
ОТВЕТЫ
Ответ 1
Если вы запускаете без отладки (Ctrl + F5), то по умолчанию он предлагает вам нажать return, чтобы закрыть окно. Если вы хотите использовать отладчик, вы должны поставить точку останова в последней строке.
Ответ 2
Щелкните правой кнопкой мыши на вашем проекте
Свойства> Свойства конфигурации> Линкер> Система
Выберите Console (/SUBSYSTEM: CONSOLE) в опции SubSystem или вы можете просто ввести Console в текстовое поле!
Теперь попробуйте. это должно работать
Ответ 3
Вот способ для C/С++:
Ответ 4
Откройте меню отладки- > Нажмите Начать без использования
Ответ 5
Он будет ждать <ENTER> .
Ответ 6
попробуйте вызвать getchar() прямо перед возвратом main() .
Ответ 7
(/SUBSYSTEM: CONSOLE) не работал для моего vs2013 (у меня его уже было).
"run without debugging" не является параметром, так как я не хочу переключаться между отладкой и просмотром вывода.
Решение, используемое в qtcreator до 2.6. Теперь, когда qt растет, vs идет другим путем. Насколько я помню, в vs2008 нам не нужны такие трюки.
Ответ 8
Здесь решение, что (1) не требует каких-либо изменений кода или точек останова, и (2) приостанавливается после завершения программы, чтобы вы могли видеть все, что было напечатано. Он остановится после F5 или Ctrl + F5. Основной недостаток заключается в том, что на VS2013 Express (как проверено) он не загружает символы, поэтому отладка очень ограничена.
Создайте командный файл. Я назвал мой runthenpause.bat со следующим содержимым:
Первая строка будет запускать любую команду, которую вы предоставляете, и до восьми аргументов. Вторая строка будет. пауза.
Откройте свойства проекта | Конфигурационные свойства | Отладка.
Теперь, когда вы запустите, runthenpause.bat запустит ваше приложение, и после того, как ваше приложение завершится, вы остановитесь, чтобы увидеть вывод консоли.
Я опубликую обновление, если выясню, как загрузить символы. Я пробовал /Z7 за этот, но безуспешно.
Ответ 9
просто введите свою последнюю строку кода:
Ответ 10
Начиная с Visual Studio 2017 (15.9.4) есть опция:
Автоматически закрывать консоль, когда отладка прекращается:
Сообщает Visual Studio закрыть консоль в конце сеанса отладки.
Ответ 11
Вы можете запустить исполняемый файл из командной строки. Таким образом, вы можете увидеть весь вывод. Или вы можете сделать что-то вроде этого:
и таким образом окно не будет закрываться, пока вы не введете данные для переменной a .
Ответ 12
добавить "| pause" в поле аргументов команды в разделе отладки в свойствах проекта.
Ответ 13
Просто нажмите CNTRL + F5, чтобы открыть его во внешнем окне командной строки (Visual Studio не контролирует его).
Если это не сработает, добавьте следующее в конец вашего кода:
Подождите, пока вы нажмете клавишу, чтобы закрыть окно терминала, как только код достигнет конца.
Если вы хотите сделать это в нескольких местах, поместите вышеуказанный код в метод (например, private void Pause() ) и вызовите Pause() всякий раз, когда программа достигает возможного конца.
Ответ 14
Несколько лучшее решение:
в начале вашей программы.
- может использовать std:: exit()
- может иметь несколько возвратов из основного
- вы можете запустить свою программу под отладчиком
- Независимый IDE (+ независимый от ОС, если вы используете трюк cin.sync(); cin.ignore(); вместо system("pause"); )
- необходимо изменить код
- не будет останавливаться на std:: terminate()
- все равно произойдет в вашей программе вне сеанса IDE/debugger; вы можете предотвратить это под Windows, используя:
Ответ 15
Обязательно сделайте любой из них в конце функции main() и перед оператором return .
Ответ 16
В моем случае я испытал это, когда создал проект Empty C++ в версии VS 2017 для сообщества. Вам нужно будет установить для подсистемы значение "Консоль (/SUBSYSTEM: CONSOLE)" в разделе "Свойства конфигурации".
- Зайдите в "Просмотр", затем выберите "Менеджер недвижимости"
- Щелкните правой кнопкой мыши на проекте/решении и выберите "Свойство". Откроется страница свойств теста.
- Перейдите к компоновщику, затем выберите "Система"
- Нажмите "Подсистема" и появится выпадающий
- Выберите "Консоль (/SUBSYSTEM: CONSOLE)"
- Применить и сохранить
- В следующий раз, когда вы запустите свой код с помощью "CTRL +F5", вы должны увидеть результат.
Ответ 17
Вы также можете использовать эту опцию
Ответ 18
Ответ 19
Visual Studio 2015, импорт. Потому что я ненавижу когда примеры кода не дают необходимых импортов.
Как предотвратить закрытие окна консоли в Visual Studio C / C ++
Это, вероятно, неудобный вопрос, поскольку, без сомнения, ответ ослепляюще очевиден.
Когда я запускаю свое приложение, появляется окно консоли, появляется вывод программы, а затем окно закрывается при выходе из приложения.
Есть ли способ оставить его открытым, пока я не проверю вывод, или просмотреть результаты после закрытия окна?
- Monodevelop делает то, что вы ожидаете.
- Согласовано. Я думаю, что лучший ответ для VS 2017 и новее - от chronoxor.
Начиная с Visual Studio 2017 (15.9.4) есть возможность:
Соответствующий фрагмент из документации Visual Studio:
Автоматически закрывать консоль при остановке отладки:
Сообщает Visual Studio закрыть консоль в конце сеанса отладки.
- 4 Я только что протестировал это в VS2017 и VS2019. Это требует как настройки подсистемы на КОНСОЛЬ, так и выключения этой опции. При наличии одного или другого окно автоматически закрывается.
- Это по-прежнему закрывает для меня окно, если я запускаю несколько проектов из одного решения.
- Я чувствую, что это правильный ответ для VS 2017 и последующих лет. Жаль, что этого нет в старых версиях.
Если вы запускаете без отладки (Ctrl + F5), то по умолчанию он предлагает вам нажать клавишу возврата, чтобы закрыть окно. Если вы хотите использовать отладчик, вы должны поставить точку останова на последней строке.
Щелкните правой кнопкой мыши свой проект
Свойства> Свойства конфигурации> Компоновщик> Система
Выбрать Консоль (/ SUBSYSTEM: CONSOLE) в SubSystem вариант или вы можете просто ввести Приставка в текстовом поле!
Теперь попробуйте . он должен работать
- Это сработало для моего VS2013 Express, но принятый ответ - нет. Очень странно, поскольку принятый ответ работал для всех версий Visual Studio, которые я использовал в прошлом.
- 9 @MichaelCalvin Вы должны запустить с Ctrl + F5 после установки этого, это кикер.
- как заявил @JonathanMee, вы все еще использовали Ctrl + F5. Это уже было установлено в моей визуальной студии 2015, поэтому первый ответ оказался наиболее полезным.
- Это действительно так. Знакомый CTRL+F5 не удастся, если вы, скажем, добавите новый файл C ++ в пустой проект.
- У меня работал над Visual Studio Express 2015. Спасибо.
Вот способ для C / C ++:
- Этот метод не работает в Visual C ++ (если вы не добавили заголовок?)
- 2 @wmac Вы должны включить заголовок windows.h
- 1 Я не включил ни одну библиотеку или пространство имен, но оно работает правильно, большое спасибо.
- 1 Не делай этого, пожалуйста. В pause команда специфична для Windows.
- У меня работал над Visual Studio 2013 Express. :)
Перейти к меню отладки->Нажмите StartWithoutDebugging
- 10 +1 - Либо это, либо Console.ReadKey() просто ждать любой клавиши.
- Странно, но в моем приложении это не действует. Он по-прежнему закрывается, не дожидаясь ввода данных пользователем.
- 4 Тогда ваш код, скорее всего, завершится до того, как достигнет этой точки.
- Не лучшее решение, если вы запускаете тесты, так как они заставят ваши тесты зависать и никогда не завершаться.
Попробуйте позвонить getchar() прямо перед main() возвращается.
- Не работает в VS 2008 для простого консольного приложения Hello Name. cout, cin, cout, getchar (), консоль все еще закрывается. В чем дело?
- 1 Попробуйте поместить getchar () дважды, если у вас есть cout непосредственно перед getchar (). getchar () ожидает char, а вы уже даете его cout . Сообщите мне, поможет ли это :)
(/ SUBSYSTEM: CONSOLE) не работал для моего vs2013 (у меня он уже был).
"запускать без отладки" не вариант, так как я не хочу переключаться между отладкой и просмотром вывода.
Решение, используемое в qtcreator до 2.6. Теперь, когда qt растет, vs идет другим путем. Насколько я помню, в vs2008 нам такие ухищрения не понадобились.
Вот решение, которое (1) не требует изменений кода или точек останова и (2) приостанавливает работу после завершения программы чтобы вы могли видеть все это было напечатано. Он будет приостановлен после F5 или Ctrl + F5. Основным недостатком является то, что в VS2013 Express (как было проверено) он не загружает символы, поэтому отладка очень ограничена.
Создайте командный файл. Я позвонил своему runthenpause.bat , со следующим содержанием:
Первая строка будет запускать любую предоставленную вами команду и до восьми аргументов. Вторая строка . пауза.
Откройте свойства проекта | Свойства конфигурации | Отладка.
Теперь, когда ты бежишь, runthenpause.bat запустит ваше приложение и после его завершения остановится, чтобы вы могли увидеть вывод консоли.
Я опубликую обновление, если выясню, как загрузить символы. Я старался /Z7 за это, но безуспешно.
- 1 Это все еще не поддерживает отладку, но, по крайней мере, решает проблему отсутствия вывода, например. VLD, в отличие от все другие ответы.
просто введите в качестве последней строки кода:
Вы можете запустить исполняемый файл из командной строки. Таким образом, вы могли видеть весь результат. Или вы можете сделать что-то вроде этого:
и таким образом окно не закроется, пока вы не введете данные для a переменная.
- 4 Это было бы отличным решением, если бы оно работало. pause похоже, работает только в пакетных файлах, и хотя он получает ввод от вашей программы на STDIN, он не распечатывает этот текст повторно. Я пробовал заменить | с участием && , но это не повлияло - предположительно, потому что он не выполняется с помощью командной оболочки (cmd.exe).
Просто нажмите CNTRL + F5, чтобы открыть его во внешнем окне командной строки (Visual Studio не контролирует его).
Если это не сработает, добавьте в конец кода следующее:
Это ждет, пока вы нажмете клавишу, чтобы закрыть окно терминала, когда код достигнет конца.
Если вы хотите сделать это в нескольких местах, поместите приведенный выше код в метод (например, private void Pause() ) и звоните Pause() всякий раз, когда программа достигает возможного конца.
Несколько лучшее решение:
в начале вашей программы.
- можно использовать std :: exit ()
- может иметь несколько возвратов из основного
- вы можете запустить свою программу под отладчиком
- Независимость от IDE (+ независимость от ОС, если вы используете cin.sync(); cin.ignore(); трюк вместо system('pause'); )
- нужно изменить код
- не будет останавливаться на std :: terminate ()
- все равно будет происходить в вашей программе вне сеанса IDE / отладчика; вы можете предотвратить это в Windows, используя:
- Очень плохой совет.
- Можете объяснить почему?
- В случае, когда отладка не ведется, она не делает ничего полезного, потому что в этом случае нет проблемы, которую нужно решать. В VS просто запустите программу с помощью Ctrl + F5 и все, так что в VS нет проблем, а в интерпретаторе команд нет проблем, короче говоря, нет проблем. А в случае, когда кто-то отлаживает и хочет, чтобы код остановки остановился, это не более удобное решение, чем точка останова, и вмешивается в ситуации, когда остановка не нужна.
Обязательно сделайте любой из них в конце main() функция и до return заявление.
Вы также можете использовать эту опцию
Visual Studio 2015, с участием импорт. Потому что я ненавижу, когда примеры кода не дают необходимого импорта.
Перейдите в Настройки> Отладка> Снять галочку рядом.
В настоящее время нет возможности сделать это с приложениями, работающими в WSL2. Однако есть два обходных пути:
В окне отладки сохраняется содержимое закрытого окна оболочки WSL.
Окно остается открытым, если ваше приложение возвращает ненулевой код возврата, поэтому, например, вы можете вернуть ненулевой код в отладочных сборках.
Читайте также: