C语言高效调试
特此说明: 内容主要参考魏永明老师老师的课程 C 语言最佳实践高阶篇之高效调试,也可以看下面我整理的笔记。建议初级C程序员多看,干货多水分少,质量很高。
成都创新互联公司是一家专业从事做网站、网站设计、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,成都创新互联公司依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!
高效调试的基本原则
- 多读代码、读懂代码,在头脑中形成代码执行路径
- 不要慌,不要怀疑一切,尤其不要轻易怀疑编译工具链
- 快速找到第一现场,理清现象和缺陷的内在关联
- 避免使用低效调试手段
C 程序常见错误分类
编译、链接错误(5%)
- 编译错误
- 链接错误:未找到某某符号
- 正确的函数库(包括版本)和库搜索路径
- 静态链接时,根据函数库依赖关系,调整函数库顺序
算法或逻辑错误(20%)
- 正确理解标准库及第三方函数库的接口语义
- 读懂代码,尤其代码产生的效果
- 单元测试
内存使用错误(70%)
- 静态数据使用错误
- 方式:越界访问
- 影响:导致数据被意外篡改导致逻辑错误,严重使程序崩溃
- 堆使用错误
- 越界访问
- 方式:使用无效地址(空指针、野指针或者已释放的指针)、内存泄露(忘记释放)、两次释放、释放非分配地址
- 影响:导致数据被意外篡改导致逻辑错误,严重使程序崩溃
- 栈使用错误
- 方式:越界访问、栈溢出
- 影响:数据被意外篡改导致逻辑错误,导致程序跑飞,程序崩溃
疑难杂症(5%)
- 命名污染,导致调用错误的函数或者使用错误的全局变量
- 整数溢出:逻辑错误(死循环)
- 异步数据访问:Unix 系统中的信号处理;多线程程序中出现竞态(race-condition)
善用调试工具
- 调试器:程序挂在哪儿了?
- efence:程序是否有堆使用错误?
- valgrind:是否存在内存泄露?
- 打桩
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
本文题目:C语言高效调试-创新互联
分享URL:
http://cxhlcq.com/article/dghgec.html