使用 Qt Creator(不使用任何类型的 Qt 框架)时为 C(非 C++)程序打印 printf
printf for a C (not C++) program while using Qt Creator (not using any kinf of Qt framework)
请注意这不是 C++ 代码,我也不是在开发 Qt 应用程序。
我主要开发嵌入式代码,有人开发了一个简洁的 LCD 仿真器,因此我们可以编写大量独立于目标平台(将是嵌入式 ARM)的代码。他给了我一个 gcc make 文件和 C 文件,我已经将它们导入到 Linux 桌面上的 Qt creator 中。只需使用一些 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 编写 GUI,我想即时打印出数据,我将只写入调试 window。
如果我想使用 Qt Creator 为标准 C 程序执行 printf,我怎样才能让 printf 将数据输出到调试器控制台?其实可以吗?
我不能使用通常的 Qdebug 工具,因为我没有使用任何类型的 Qt 框架。我只是将 Qt 用作 ARM C 代码的 IDE 和调试器。
如评论中所写(我写为评论是因为我这里没有QT所以无法查看,过去几个月也没有使用过,所以我不确定),有一些解决方案你可以试试:
- 在调试器控制台旁边的栏中还有另一个 window,称为 "Application Output",QT 控制台应用程序的输出就在这里。也许 printf 写在那里
- 通常两个流(STDOUT 和 STDERR)都被重定向到适当的 window,但有时不会。尝试更改它
- 最后的解决办法,如果实在不行,就是用文件;写入调试文件并读回应用程序必须说的内容。不如直接输出那么直接,但聊胜于无
根据您的回复,打印到 STDERR 会在应用程序输出 window 上显示输出,因此它也适用于纯 C。我认为 STDOUT 流也应该被重定向到那个 window, 虽然
请注意这不是 C++ 代码,我也不是在开发 Qt 应用程序。
我主要开发嵌入式代码,有人开发了一个简洁的 LCD 仿真器,因此我们可以编写大量独立于目标平台(将是嵌入式 ARM)的代码。他给了我一个 gcc make 文件和 C 文件,我已经将它们导入到 Linux 桌面上的 Qt creator 中。只需使用一些 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 编写 GUI,我想即时打印出数据,我将只写入调试 window。
如果我想使用 Qt Creator 为标准 C 程序执行 printf,我怎样才能让 printf 将数据输出到调试器控制台?其实可以吗?
我不能使用通常的 Qdebug 工具,因为我没有使用任何类型的 Qt 框架。我只是将 Qt 用作 ARM C 代码的 IDE 和调试器。
如评论中所写(我写为评论是因为我这里没有QT所以无法查看,过去几个月也没有使用过,所以我不确定),有一些解决方案你可以试试:
- 在调试器控制台旁边的栏中还有另一个 window,称为 "Application Output",QT 控制台应用程序的输出就在这里。也许 printf 写在那里
- 通常两个流(STDOUT 和 STDERR)都被重定向到适当的 window,但有时不会。尝试更改它
- 最后的解决办法,如果实在不行,就是用文件;写入调试文件并读回应用程序必须说的内容。不如直接输出那么直接,但聊胜于无
根据您的回复,打印到 STDERR 会在应用程序输出 window 上显示输出,因此它也适用于纯 C。我认为 STDOUT 流也应该被重定向到那个 window, 虽然