大家好,我是土盐,很高兴,又和大家见面了。
昨天和大家聊到,编程是需要熟练度的,这跟任何工作一样,重复是成功之母,多重复被虐,可能就会体会到失败是成功之父了。
可是,人与人之间差别还是挺大的。
我用QtQuick写了一个程序,可以控制四台设备,每台设备开机需要将电机复位。电机复位是在状态机流程里面,状态机实现靠的是定时器驱动。
作为大白,四台设备就有四个流程控制类的cpp文件,每个流程类大致相同,就里面的电机类参数不一样。
现在遇到一个问题,让我熬夜一周都无可奈何。开机出现内存错误。
这让我一度怀疑是使用的核心板不行,哈哈。
实在没办法,求助前同事J。
J昨晚来公司大展身手,手把手带我解决了这个问题,仿若天神下凡,解决苍生。
J操作猛如虎。
首先,打扫干净屋子再请客。把环境中无关的占用内存的程序,咔咔掉。这主要是通过meminfo、top、ps、rm ./cache*、rm .*filename -r等命令实现。
然后。打通任督二脉。基于shell编程,打通桌面开发、服务器开发、ARM开发妨碍三个互联互通的阻碍。使得编码编译后快速验证。
最后,基于日志信息,缩小范围,定位到问题点。最后发现关键问题是,定时器在另一个线程打开关闭引起的。电机类有用到多线程发送指令,流程类使用定时器和电机类,出现了定时器在另一个线程打开关闭的情况,导致报错。
J大神通过将流程类用线程实现,去掉定时器,解决了上述问题。
感觉世界顿时清新了,哈哈。
看大神秀操作,让我体会到,抽丝剥茧的快乐,这也是编程的魅力。真相只有一个,就差福尔摩斯闪亮登场。
快上班了,这里给大家分享一个使用电脑小妙招。朋友们遇到需要方案设计时,没有模板怎么办?
可以去知网百科或者问答去搜搜文献,或者用MSDN或者必应浏览器搜英文关键词。
好了,我们明天见。