printf для программы на C (не на C ++) при использовании Qt Creator (без использования каких-либо типов инфраструктуры Qt) - PullRequest
0 голосов
/ 08 марта 2019

Обратите внимание, что это не код C ++, и я не занимаюсь разработкой приложения Qt.

Я в основном разрабатываю встроенный код, и кто-то запустил аккуратный эмулятор ЖК-дисплея, чтобы мы могли писать довольно много кода независимо от целевой платформы (которая будет встроена в ARM). Он дал мне файл gcc make и файлы C, которые я импортировал в Qt creator на рабочем столе Linux. Он может быть скомпилирован для разных платформ только с некоторыми опциями gcc. Так что, хотя в конечном итоге он будет работать на STM32, я могу написать код на компьютере. Он делает это на Windows, но я делаю это на Linux.

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

Я должен сказать, что могу скомпилировать строку так:

printf("Selected Index is %d, Highlighted Position is %d, Index Start is %d \n",selected_index,highlight_position,index_start);

Но я не вижу вывода в консоли отладчика.

Если я использую Qt creator для написания графических интерфейсов в тех редких случаях, когда я хочу распечатать данные на лету, я просто напишу в окно отладки.

Если я хочу сделать printf для стандартной программы на C, использующей Qt creator, как я могу заставить printf выводить данные на консоль отладчика? На самом деле это можно сделать?

Я не могу использовать обычное средство Qdebug, так как я не использую какой-либо фреймворк Qt. Я просто использую Qt как IDE и отладчик для кода ARM C.

1 Ответ

1 голос
/ 08 марта 2019

Как написано в комментарии (который я написал как комментарий, потому что у меня нет QT здесь, и поэтому я не могу проверить его, и я не использовал его в последние месяцы, поэтому я не был уверен), есть некоторые решения, которые вы можетеtry:

  • В панели рядом с консолью отладчика есть еще одно окно, называемое «Вывод приложения», в котором выводятся консольные приложения QT.Может быть, там написано printf
  • Обычно оба потока (STDOUT и STDERR) перенаправляются в соответствующее окно, но иногда нет.Попробуйте изменить его
  • Последнее решение, если ничего не работает, это использовать файл;запишите в файл отладки и прочитайте, что должно сказать приложение.Не так быстро, как прямой вывод, но лучше, чем ничего

Согласно вашему ответу, печать в STDERR показывает вывод в окне вывода приложения, поэтому он работает и для простого C. Я подумал, что такжеПоток STDOUT должен был быть перенаправлен в это окно, хотя

...