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

2023-10-16 19:11:39 浏览数 (2)

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

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

代码语言:javascript复制
    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

  • 上一篇:没有了
  • 下一篇: DW1000的SPI速率

0 人点赞