关于未定义的引用的bug 解决

来源:互联网 发布:nx网络验证源码 编辑:程序博客网 时间:2024/06/07 01:40

       首先要区分未声明的错误和未定义引用的错误。

未声明的错误发生在程序编译阶段,说的通俗点就是语法检查(我的理解是这样,如有不对,欢迎拍砖) 就是检查所用的方法有没有被包含进来, 思路就是检查头文件和makefile文件中的头文件包含或者说你的文件名有没有写错。

未定义引用主要发生于程序的链接阶段。 简单点的意思就是 你建一个楼房 把各种材料组合成一起 。 出问题就在于组合的时候出问题了 。  常见问题一般3个原因 一:路径错误,也就是makefile错误 二:缺材料 ,就是你需要的功能没有 !  (可以用nm 看你生成的 库时候有你需要的函数 ,我刚才就犯了这样的错) 3 你的材料名错误。。。  



ps ----  改错就是一个抽丝剥茧的过程, 首先要有思路!  其次要熟悉工具!  二者缺一不可 我就对工具很不熟悉 难过所以我改bug 很慢。  (gdb,grep find nm 等)思路的一般流程就是 确定错误类型----》熟悉造成这个错误的原因(这个就是工作的经验了 )------》使用工具来验证你的想法  ------》解决问题。

改业务错误 就要检查你的逻辑了  流程  查看日志 ------》大致确定问题范围 (用二分法原理 其实很快的 我习惯打印 )-------》打印变量跟踪业务流程 -------》  发现问题 (问题虽然发现了 但是有时候还是无法精确定位 我就遇到过野指针导致 程序多次循环的问题 ,而不是所谓的崩溃  就是一个普通的for循环 多次循环。  以前我不喜欢用gdb  认为 普通打印到屏幕也可以完成同样的动作。。  但是这个问题还是用gdb解决的 。。。。  所以坚决学习常用工具 ,也许查小错误 我感觉还是打印速度快) 

  本人调试错误能力不强 需要不断的高质量代码量喂出来。。。




0 0