#c #c #qt #debugging
#c #c #qt #отладка
Вопрос:
Я только что обновил QT Creator до 4.13.0, и теперь я не могу читать из stdin, находясь в отладчике.
Несколько деталей…
- Я работаю на macOS.
- Я пишу C , но использую библиотеку C stdio. (по историческим причинам)
- Я использую clang 15.5.0 в режиме c 11.
- Я использую опцию отладчика «Запуск с терминала».
Проблема: введите, как я мог бы, когда мой код переходит в fgets
, он никогда не возвращается.
Упрощенный пример:
#include <stdio.h>
int main()
{
char buf[1024];
if (fgets(buf,1024, stdin)) // In debugger, this call never returns!
{
fprintf(stderr, "%s", buf);
}
return 0;
}
Примечание: Когда я запускаю это вне отладчика — никаких проблем.
Кто-нибудь сталкивался с этим и исправлял это? Есть идеи о том, как это исправить?
Комментарии:
1. Это не относится к «запуску в терминале» в Ubuntu, поэтому проблема, по-видимому, связана с конкретной консольной интеграцией с Qt Creator.
2. В поисках обходных путей я переустановил QTC 4.13, и проблема не устранена. Я также установил на виртуальных машинах Windows и Linux. Никаких проблем нет.
3. Нашли обходной путь. Вместо того, чтобы запускать программу из QTC, я запускаю из командной строки и использую опцию меню Debug, чтобы «Прикрепить к запущенному приложению» или «Прикрепить к неустановленному приложению».
4. Не могли бы вы опубликовать ошибку в Qt company? Я делал это всего пару раз, когда имел учетную запись компании, но считаю, что отдельные люди тоже могут это сделать: bugreports.qt.io/secure/Dashboard.jspa
5. На самом деле… Я сделал это сегодня утром.
Ответ №1:
Может быть проблема с приложением запуска терминала openTerminal.py внутри QtCreator.
У меня была аналогичная проблема, когда вывод моего консольного приложения отображался корректно в сеансе терминала при запуске в режиме отладки без отладчика, но при запуске с помощью отладчика весь системный вывод и системная ошибка записывались в виджет вывода приложения, что делало невозможным чтение каких-либо значений из std::in.
Решение было: управление наборами: система среды заменяет длинный путь «… /openTerminal.py » с помощью «/Applications/ Utilities/Terminal.app»
Комментарии:
1. это дает мне
Cannot start the terminal emulator "/Applications/Utilities/Terminal.app", change the setting in the Environment options.
(на Каталине 10.15.7)