存档

文章标签 ‘kgdb’

kgdb源代码分析(2.6.27)第五章-kgdb初始化时机

2010年7月1日 没有评论

一个程序编译好之后有代码段,只读数据段,数据段等一些段,而
__attribute__((__section__(…)))这个gcc的编译扩展属性,它能够把函数或数据放入
指定名字的段中。

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

2010年7月1日 没有评论

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

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

2010年7月1日 没有评论

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

kgdb内核选项配置

2010年6月28日 没有评论

KGDB内核选项配置

kgdb抓虫日记 – set breakpoint at ppc64

2010年6月28日 没有评论

一般来说,往哪个点设置什么值,是由gdb来主导的,kgdb只是执行相应的动作,既然kgdb是正常执行的,
那也许就意味着是gdb搞错地址了,把module_event函数的地址给取错了,然后触发了这个问题.

kgdb抓虫日记 – kgdboe 与 system hang

2010年6月28日 没有评论

为解决这个bug,前前后后忙了我整整一个星期。虽然最终的问题和kgdb关系不大,但我学到了不少东西,
比如说加深了系统中断的处理实现和mips的很多东西。

kgdb抓虫日记 – kgdb 与 jiffies[softlockup]

2010年6月28日 没有评论

If the sched_clock() was realized based on jiffies, kgdb often
causes softlock warning messages on resuming or detaching from
a debug session.

KGDB 与 指令级单步调试

2010年6月28日 2 条评论

KGDB 单步调试流程(X86,硬单步)

A: KGDB进入调试状态,等待gdb的指令.(陷入调式异常的处理函数,使用轮询方式 来检测gdb端的输入数据)
B: gdb 发送 “s” 指令给 KGDB
C: KGDB 收到”s” 指令后,设置EFLAGS寄存器的TF位,使得当前CPU进入单步调试模式.
D: KGDB退出调式异常处理函数,让系统恢复正常运行
E: CPU执行一条指令后,就会产生单步异常。
F: KGDB陷入调式异常, 发信息通知gdb。
G: KGDB回到 A 状态, 继续等待gdb指令.

分类: 深入kgdb 标签: ,

kgdb抓虫日记 – set breakpoint at mips

2010年6月23日 没有评论

其本质原因是, kgdb依赖了notifier_call_chain()来捕获断点,只要往notifier_call_chain()下了断点就会让kgdb陷入死循环的问题.

所以从本质上解决问题的方法有两个:
1: 不让kgdb依赖notifier_call_chain().
2: 禁止把断点下类似notifier_call_chain()这样的kgdb依赖的函数里面.