0
点赞
收藏
分享

微信扫一扫

编程的福尔摩斯,探索唯一的真相

大家好,我是土盐,很高兴,又和大家见面了。

昨天和大家聊到,编程是需要熟练度的,这跟任何工作一样,重复是成功之母,多重复被虐,可能就会体会到失败是成功之父了。

可是,人与人之间差别还是挺大的。

我用QtQuick写了一个程序,可以控制四台设备,每台设备开机需要将电机复位。电机复位是在状态机流程里面,状态机实现靠的是定时器驱动。

作为大白,四台设备就有四个流程控制类的cpp文件,每个流程类大致相同,就里面的电机类参数不一样。

现在遇到一个问题,让我熬夜一周都无可奈何。开机出现内存错误。

这让我一度怀疑是使用的核心板不行,哈哈。

实在没办法,求助前同事J。

J昨晚来公司大展身手,手把手带我解决了这个问题,仿若天神下凡,解决苍生。

J操作猛如虎。

首先,打扫干净屋子再请客。把环境中无关的占用内存的程序,咔咔掉。这主要是通过meminfo、top、ps、rm ./cache*、rm  .*filename -r等命令实现。

然后。打通任督二脉。基于shell编程,打通桌面开发、服务器开发、ARM开发妨碍三个互联互通的阻碍。使得编码编译后快速验证。

最后,基于日志信息,缩小范围,定位到问题点。最后发现关键问题是,定时器在另一个线程打开关闭引起的。电机类有用到多线程发送指令,流程类使用定时器和电机类,出现了定时器在另一个线程打开关闭的情况,导致报错。

J大神通过将流程类用线程实现,去掉定时器,解决了上述问题。

感觉世界顿时清新了,哈哈。

看大神秀操作,让我体会到,抽丝剥茧的快乐,这也是编程的魅力。真相只有一个,就差福尔摩斯闪亮登场。

快上班了,这里给大家分享一个使用电脑小妙招。朋友们遇到需要方案设计时,没有模板怎么办?

可以去知网百科或者问答去搜搜文献,或者用MSDN或者必应浏览器搜英文关键词。

好了,我们明天见。


举报
0 条评论