所以,为了方便调试,很多人习惯开篇就Debug,稍不留意,后面想生成一个Release版本的时候,就会发现各种问题。
编译不通过啦,功能不正常啦什么的。
最好的办法还真的就是从头开始就运行Release版本的,修改一部分记得看看运行正常不正常。总有一些坑爹的小问题,让你找破脑袋也找不到。真的烦。
特别是接手别人的工作,活着不好吗要用Debug版本,我就不吐槽debug版本的库到底多大了,上传个文件到服务器要花你好长时间,破公司还非得要你上传可以执行的文件,还不能只传源码。这还不是最主要的问题,最主要的是,要你把Debug版本重新编译成Release版本。。。。。。
今天修改代码,打包软件时发现调用的一个封装好的执行文件,打的Debug包。。。。打个包,接近700M。不得已重新编译Release版本,不出所料,功能不正常了。是一个很简单的串口通信。原来的代码,用的还不是Qt5自带的SerialPort类,这些都不管,下面是原来的代码
对 就这么简单的代码。debug版本正常工作,一切OK,Release版本不工作了,这个函数数据串口发不出去啦!!!
七找八找,妈的 ,bB这个变量没有初始化,没有初始化!!!全文没有初始话,然后,根本不调用发送的方法。无奈,我添加了bB变量初始化,为FALSE,然后就正常工作了。
所以说,Debug版本会帮你做一些类似初始化的这些工作,Release不会。所以在工程中,稍不留意,就会遗留这些问题导致程序运行不正常。好在修改的这个只是一个简单的串口程序,如果是较大 的程序,还不知道需要花多少时间来解决。
所以啊,大家一定要养成好的习惯啊 ,实时运行啊 当前,大牛们除外的。再者,该注意的细节还是要多注意。
void Dll_THS::uartSend(QString s,bool isHex)
{
if(bB==false)
{
bB=true;
QByteArray hexdata;
if(isHex)
{
String2Hex(s,hexdata);
Com->write(hexdata);
}
else
{
s+="\r\n";
Com->write(s.toLatin1());
}
bB=false;
}
}