读书笔记《Debug Hacks --调试技术与工具》(0-概述)

Debug是非常个性化的工作,但是有效的debug方法,解决问题的思路毫无疑问是建立在对系统,应用的理解上。

程序从编码到运行,有语法/编译问题,以及运行的问题。本系列的读书笔记主要讨论运行过程中遇到问题,如何继续调试。

从代码到完成,经历的阶段有:需求定义,设计,编码,测试,调试等。

  1. 编码:对项目进行编译与构建,修改并消灭编译错误与构建错误;
  2. 测试:发现bug,找出不符合预期的行为。有方法认为编写程序前先写测试程序,TDD,即测试驱动开发。
  3. 调试:对于给定的输入,确定输出是否符合预期。

调试的工具/方法,主要包括如下:

  1. 内核转储;
  2. GDB工具;
  3. 对于CPU架构,内存模型,参数传递的理解;
  4. 对于汇编语言的理解,反汇编查阅代码;
  5. Oops信息解读;
  6. SysRq键调试;
  7. strace,crash等命令;
  8. 内核调试相关的kernel panic;
  9. objdump的选项;
  10. Valgrind的使用;
  11. kprobes/jprobes/kprobes获取任意位置信息;
  12. systemtap进行调试;
  13. /proc/meminfo, 以及 /proc//mem 信息的解读;
  14. init节的理解。

个人认为,debug的过程,本身就是还原对代码/系统机制等理解,对于不符合预期的行为进行分析。

没有任何一个debug方法可以包罗万象,如果有,那么这个方法就是将所有计算机相关技术串在一起的指引,这样的指引,就是一个个不同的领域的知识的有机结合。

本系列将针对不同的主题,逐个进行实例记录,有基本的认识后,便于在对应的场合能使用合适的工具。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值