程序遇到问题错误bug时的15种解决方法途径总结以及之前的一些具体例子
目录
1 信心--没有解决不了的bug
2 耐心、不要着急、静下心来、用脑思考
2.1 开始解决问题前不要着急,先思考
2.2 在解决问题的过程中也不要着急,要冷静思考
3 灵活运用、不要局限或痴迷于某一种方法
4 不要经验主义、不要局限于以前的经验或者知识点
5 网络搜索、Github搜索、善用开源的东西、善用现成的东西
6 大模型问答:必应、kimi、通义千问、文心一言
7 看芯片手册、SDK手册、官方demo、开源代码的源码
8 寻求技术支持、技术交流群
9 gdb调试
9.1 集成开发环境调试:vscode、clion、visual studio等
9.2 gdb命令调试
9.3 硬件仿真器调试、ARM裸板调试:J-Link、ST-Link、TI的XDS调试器
10 打印
10.1 应用程序的printf、cout以及第三方log
10.2 驱动程序的printk、串口打印
11 利用一些工具
11.1 内存泄漏分析工具工具:asan、valgrind
11.2 跟踪系统调用
13 对比调试法:一次解决ffmpeg错误的方法记录
14 把自己的代码再看一遍
15 挨段代码注释法
16 重启法
17 整体编译法
参考文献
1 信心--没有解决不了的bug
在解决问题前要有信心,相信只要自己去做,那么bug就一定能解决,没有解决不了的bug,在解决bug的过程中,如果经过多次尝试各种方法还是没能解决也不要放弃,再继续尝试说不定突然就解决了,以前你的很多bug都是不放弃最终解决掉了。
2 耐心、不要着急、静下心来、用脑思考
2.1 开始解决问题前不要着急,先思考
当程序遇到问题或者错误的时候,不要经过思考,直接去网上搜答案,或者直接去调试,应该先静下心来思考有哪些可能得原因,是不是自己哪里配置错误而不是程序有问题,比如遇到缺陷错误时,别着急,冷静思考,-CSDN博客,当整体大方向确定没问题之后再想办法去解决问题。
2.2 在解决问题的过程中也不要着急,要冷静思考
在解决问题的过程中,可能你尝试了一些方法都没能解决,这时候也不要像无头苍蝇一样继续尝试各种方法,而是应该静下心来思考,因为你已经试了一些方法了,那么你肯定对这个问题有初步的认识了,那么这时候应该基于前面的尝试去考虑下这个问题最大的可能性是什么,边思考边尝试,而不是一股脑的着急用各种不同的方法尝试解决。
3 灵活运用、不要局限或痴迷于某一种方法
这些方法是要灵活运用的,而不是只用一种,
比如之前你觉得大模型挺好用的,遇到问题就去问大模型,然而有时候自己网上搜索反而能找到答案;
还有就是用IDE调试的方法确实挺好用的,但是你不能遇到问题也不思考就打开了调试器去调试,然后陷到这种方法里面了,有时候认真看看代码就能解决,没必要直接vscode调试。
4 不要经验主义、不要局限于以前的经验或者知识点
不要觉得以前是怎么解决的,然后这次也应该怎么怎么样,不要因为经验导致一些错误的判断,然后就一直走进死胡同了,很多时候要抛弃经验,多尝试不一样的新的方法。比如从副来看,你看音p的可以直接去网上搜别人的博客,找现成的开发板,而不是基于自己以前的经验在那里想怎么开发I2S,T41的开发板配网可以直接web而不是就只用串口的方法,T41的glibc可以去github上搜,还有很多算法都是可以直接去github上找到开源的东西的,所以怎么说呢,有时候多尝试不同的方法,不要老是基于自己以前的经验去判断。
5 网络搜索、Github搜索、善用开源的东西、善用现成的东西
当遇到报错的时候,最长想到的就是去网上搜一下,这个需要注意的是尽量首选x歌,然后才是x度,因为x歌的搜索结果确实很节省时间,有时候x度搜索前几页都没有标准答案,而x歌第一条就是正确解决方法。
不只是解决bug,有时候对于一些未知的,不知道怎么解决的,不知道怎么查找资源,比如从副业来看,你看音p的可以直接去网上搜别人的博客,找现成的开发板,而不是自己想怎么开发I2S,T41的glibc可以去github上搜,还有很多算法都是可以直接去github上找到开源的东西的,所以怎么说呢,多找现成的资源,多找开源的东西,不要老是想着自己写,不要老是想着自己解决。
6 大模型问答:必应、kimi、通义千问、文心一言
随着大模型的兴起,我们遇到问题可以直接问大模型,大模型相比网络搜索有时候能够省掉你的时间,但是有一个需要注意的不是痴迷于大模型,有时候大模型没有的,自己去网上搜索反而能找到答案,你最开始觉得大模型好用就什么问题直接问大模型,大模型没有你觉得就懒得搜了,这个意识要改掉。
必应中的 Microsoft Copilot (bing.com)
Kimi.ai - 帮你看更大的世界 (moonshot.cn)
通义tongyi.ai_你的全能AI助手-通义千问 (aliyun.com)
文心一言 (baidu.com)
7 看芯片手册、SDK手册、官方demo、开源代码的源码
有时候在用一些芯片的时候,如果遇到一些错误码,那么可以去芯片手册看看这个错误码代表哪种类型的错误,还有有时候用的接口报错,那么去SDK手册里面看一下这个接口的使用条件,或者传入的参数是不是有什么要求,或者自己的调用流程是不是不对。还有看一下官方的demo,然后是不是自己使用的跟官方的demo有什么不一样,还有就是比如再用opencv、ffmpeg等这些开源代码的时候,可以去看一下开源代码的源码,或者他们的头文件介绍,比如下面这个错误,当初去看一下opencv头文件的函数介绍也许解决的效率就更高了。
记帮两个同事解决的一个奇怪bug-CSDN博客
8 寻求技术支持、技术交流群
有时候用的是一些厂家芯片,网上就没有资料,那么这时候就是去找厂家的技术支持,只能这样解决,要不然自己摸索也不会有答案。
9 gdb调试
9.1 集成开发环境调试:vscode、clion、visual studio等
这个是我最常用的一个方法,用集成开发环境调试,能够打断点看程序执行,单步执行,能够看到各种变量,能看堆栈,看函数调用层次关系特别方便,但还是一个注意事项,就是不要局限于这种方法,有时候如果这种方法一直没能找到错误原因,那就换一个,虽然这个方法很好用但不要痴迷于他。