当前位置: 技术问答>linux和unix
LINUX能否跟踪内核单步的C代码
来源: 互联网 发布时间:2016-10-14
本文导语: 看书看的郁闷,想滚雷似的滚一下内核代码。 RT,就像BCB那样, 设个断点,编译,执行后能够单步跟踪每条C代码中 各个变量的变化情况,最好能 将结构体所有变量全部打出来。 LINUX目前有没有这种功能的调试工具...
看书看的郁闷,想滚雷似的滚一下内核代码。
RT,就像BCB那样,
设个断点,编译,执行后能够单步跟踪每条C代码中 各个变量的变化情况,最好能
将结构体所有变量全部打出来。
LINUX目前有没有这种功能的调试工具?
打个比方,
pid = fork();
我想进入fork里面,一层一层的往里跟, 查看下每条语句执行,像BCB那样光标指到一行语
句就能扫到每个变量?THS!
RT,就像BCB那样,
设个断点,编译,执行后能够单步跟踪每条C代码中 各个变量的变化情况,最好能
将结构体所有变量全部打出来。
LINUX目前有没有这种功能的调试工具?
打个比方,
pid = fork();
我想进入fork里面,一层一层的往里跟, 查看下每条语句执行,像BCB那样光标指到一行语
句就能扫到每个变量?THS!
|
kgdb
systemtap
ftrace
第一个是调试器,后两个都是trace tool,都可以做类似的事情
systemtap
ftrace
第一个是调试器,后两个都是trace tool,都可以做类似的事情
|
长时间的调试几乎不可能
因为有些代码使用了优化技术,和源代码根本对不上
另外单步调试的结果也可能和实际运行不一样
据说可以用printk的打印方式来调试
因为有些代码使用了优化技术,和源代码根本对不上
另外单步调试的结果也可能和实际运行不一样
据说可以用printk的打印方式来调试
|
调试系统代码,跟调试应用代码不可能一样的
|
userspace kernel
|
编译的时候指定-O0就可以了。