有时侯调试需要知道某个全局变量的值,除了用gdb调试外,还可以用模块的方法打印出来。主要是通过读取/proc/kallsyms的方法获得他的地址,然后通过打印出这个地址所存放的数值就可以了。当然,这种方法比较有限,只适用于那些不变的变量或是常量。其实kprobe中也是这么做的,只不过它封装的比较多而已。
//0xc0ba096c是通过cat /proc/kallsyms中获取的地址
int __init mod_test_init(void)
{
printk("the val = 0x%x\n",*(long *)0xc0ba096c);
}
本文介绍了一种在Linux内核环境中打印全局变量值的方法。利用/proc/kallsyms文件可以找到变量地址,进而通过 printk 函数输出其内容。此方法适用于调试过程中查看不可变变量或常量的值。

248

被折叠的 条评论
为什么被折叠?



