提升基础代码质量,文心一言使用体验



前两天定位一个嵌入式应用的死机问题,过程极为复杂,首先用jlink抓core文件,然后用trace32恢复现场,最后发现是idle线程的任务栈被踩了,但是没法确定是谁踩了这个内存,理论上,靠死机dump也是能恢复出来哪一个操作产生的这个现象,但极为复杂,需要通过SP去恢复其他线程的任务栈,也就是踩内存产生的死机,通常恢复出来都是被踩的任务栈,最后还是得依靠打印日志,走查代码查出是谁干了坏事;


最终,发现异常的代码,是多个相似的结构体,做移位操作的时候,把结构体类型写错了,下面的代码:

    if (g_tag_sms_manager.cacheSize != 0 && g_tag_sms_manager.cacheStartIndex > 0) {
        for(int i= 0; i < g_tag_sms_manager.cacheSize; i++) {
            memcpy((void *)&g_tag_sms_manager.brodcastDigest[i], (void *)&g_tag_sms_manager.brodcastDigest[g_tag_sms_manager.cacheStartIndex+i],
            sizeof(uwb_sms_digest));
        }
    }

关键在sizeof(uwb_sms_digest),这个地方给的大小决定了拷贝的源和目标的大小,由于这是一段复制粘贴的代码,同事忘了修改这个结构体变量的类型,直接用成了另一个结构体的sizeof(tag_uwb_sms_t),导致读写都越界,后果自然是不可预期了!


作为一个十多年的码农,出现这个低级错误,是不是挺无奈的!而我们的同事说,为了实现这个需求,算法逻辑调试了两周,中间解决了好多的类似的内存问题!


其实,上面的代码和算法也不复杂,就是一个短消息的缓存处理,入队,排序,出队,想到百度最近发布的生成式AI,文心一言,不试不知道,试了发现确实很强大,使用它,不仅能提升生产力,产品的稳定性也有了更大的提升。


文心一言生成的代码:

呱牛笔记


呱牛笔记

 代码很完整,对问题的理解也很到位,代码也不会有低级问题!


那么,程序员的价值体现在哪里呢?

1、需求理解,拆解问题,提出问题的能力;

也就是给文心一言提出具体的问题,然文心一言给出相应符合要求的代码;


2、系统整合的能力;

毕竟我们开发的不只是一段代码,而是一个复杂的系统,而程序员,就是将这个这些片段的代码,通过合适的接口,封装,组合成一个复杂的系统; 


3、如上,如果没有这些能力了,是不是就只能失业了。

悲观者如是说。


本文为呱牛笔记原创文章,转载无需和我联系,但请注明来自呱牛笔记 ,it3q.com

请先登录后发表评论
  • 最新评论
  • 总共0条评论