关于工程输出日志的三两事(qt creator 、visual studio)

单步调试、打印文本日志、打印终端日志是经常要用的。
但有时候终端日志明明打印了,却未显示,原因还是在我们自己。
下面是我本人经常要用到的几个终端输出的办法。

1. 关于QT creator的输出:

1) 如果新建项目时选择Qt Console Application:
a)设置为在cmd中输出的方法为: 左侧Projects→Run→Run in terminal打钩。
b)不设置为Run in terminal的话,输出默认是在Creator的Application Output窗口中

2) 如果选择了GUI项目或者空项目,那么输出默认是在Creator的Application Output窗口中
但有时候我们在这样的工程里尝试用qDebug打印日志的时候,得到一条错误信息: Cannot retrieve debugging output.
目前我结合网上资料和自己尝试,可能有以下2个原因。
a) 打开了多个qt creator进程。
This problem can show up if more than one instance of Qt Creator is active. To fix the issue, simply close all the other instances of Qt Creator and it should work.
b) 已经打开了1个DebugView。
Or you may be running a version of DebugView from Sysinternals, that causes the same result.
以上解决方式都尝试关闭就行了。

2. 关于VS的输出:

1)如果是qt工程无论如何一般都在output中输出了。


2)假如是MFC工程

①在要打印调试的类中加上头文件

#include <io.h>//Rain  用来输出调试信息

#include <fcntl.h>//Rain

 

②加入一个方法

void InitConsoleWindow()//Rain

 {

int nCrt = 0;

FILE* fp;

AllocConsole();

nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);

fp = _fdopen(nCrt, "w");

*stdout = *fp;

setvbuf(stdout, NULL, _IONBF, 0);
// 假如要输出中文
_tsetlocale(LC_CTYPE, _T(  "chs" ));

}

 

③在类的初始化部分调用这个方法,比如在一个窗口内中调用的话,就在OnInitDialog方法中调用:

InitConsoleWindow();//Rain

 

④在需要输出调试信息的地方用printf()方法打出来,如:printf("====xdiff:%d",xdiff);

 

这样,当程序运行就会弹出一个cmd控制台,打印出调试信息



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值