存档

2010年7月 的存档

使用KGDB调试内核 on QEMU(一步一步跟我学)

2010年7月16日 27 条评论

一步一步跟我学 使用KGDB调试内核 on QEMU.
1: 编译Linux + KGDB
2: 制作自己的文件系统
3: 安装qemu
4: 使用qemu运行自己编译的内核
5: gdb 连结 自编译内核的kgdb
6: gdb + kgdb 调试内核操作示例
7: 引用/扩展阅读

透過虛擬化技術體驗 kgdb

2010年7月18日 没有评论

本文转载自 Jserv’s blog

Jserv老师在调试器方面有很深的造诣,并且通过文章,演讲和培训的方式与大家一起分享,让大家学到很多东西。这里转载一篇Jserv老师的kgdb文章。

在這之前,我們需要良好的工具,稍早在 [快快樂樂學 GNU Debugger] 的教育訓練提過 gdb 的重要概念與用法,而對於 kernel,則需要 [kgdb]。過去,Linux + kgdb 的繁複過程讓人望之卻步,我們只能眼巴巴看著 BSD kernel hacker 玩弄著 bsd kgdb,游刃於巧妙的指令與系統變化間,如今,Linux 2.6.26 就內建了延宕多年的 kgdb,且讓我們試著操作。

GDB 使用 Tips

2010年7月16日 没有评论

GDB 使用 Tips

本文转载自 comcat’s blog

分类: gdb 标签:

kgdb抓虫日记 – gdb 7.1 不能正常退出KGDB

2010年7月9日 没有评论

gdbserver对于不识别或者不支持的命令,都是返回””空包给gdb的,
所以kgdb也应当返回””空包给gdb,这样问题就解决了.

kgdb源代码分析(2.6.27)

2010年7月1日 3 条评论

本文的内容:
1.从内核是怎样把控制权交给 KGDB 的开始,到
2.kgdb 的入口函数,看 kgdb 怎样处理竞态,再了解
3.kgdb 和 gdb 之间的通信协议,接着是
4.kgdb 对具体命令的执行,最后再看看
5.kgdb 是在什么时候被启动的.

kgdb源代码分析(2.6.27)第一章-异步通知

2010年7月1日 没有评论

当内核踩到一个断点时,当前进程是用什么方式通知 kgdb,控制权又是怎样到 kgdb
手上的呢?

kgdb源代码分析(2.6.27)第二章-准备工作

2010年7月1日 没有评论

在当今多线程和多 cpu 的情况下,到处都充满了竞态,那
个线程都怕被别人搞破坏,那 kgdb 又是怎样让自己立于不败之地,控制好 cpu 们的?

kgdb源代码分析(2.6.27)第三章-gdb 远程串行协议

2010年7月1日 4 条评论

RSP 是一种基于 ASCII 码的协议,以 gdb 发送命令,目标端(在这里是 kgdb)返回执行
结果或信息的方式来进行的,而命令和回复在传输过程中又是封装在一个包(packet)里面
的.每个包以一个’$’开始,接着是实际数据,数据以一个’#’结束,后面跟着两位十六进制数
字用作校验和($packet-data#checksum).

kgdb源代码分析(2.6.27)第四章-命令实现

2010年7月1日 没有评论

到 kgdb 这边的都是很直接的,比如用户试图在
gdb中打印一个局部变量的值,gdb 通过和 kgdb 得到当前进程寄存器的信息,最终计算出要
读的内存地址和长度,kgdb 只要应 gdb 的要求提供相应的信息和设置相应的地址就够了,所
以 gdb 是调试里面的主角.

kgdb源代码分析(2.6.27)第四章-4.2 continue 和 step

2010年7月1日 没有评论

总结一下这个过程:
1.gdb 获得当前 pc 寄存器值,并把它减一.
2.取消所有断点.
3.单步调试原来断点位置的指令.
4.单步调试引起的 debug 中断让 kgdb 在次拿到控制权,kgdb 再把所有断点加回去.
5.后面继续单步调试.