本文共 875 字,大约阅读时间需要 2 分钟。
/proc/kcore 提供了整个机器的内存镜像,这样可以通过gdb vmlinux /proc/kcore 来debug kernel.kcore的实现在fs/proc/kcore.c中。为什么说kcore代表整个机器的内存镜像呀,这点从kcore的初始化函数就可以看到static int __init proc_kcore_init(void){#在proc下创建kcore文件 proc_root_kcore = proc_create("kcore", S_IRUSR, NULL, &proc_kcore_operations); if (!proc_root_kcore) { pr_err("couldn't create /proc/kcore\n"); return 0; /* Always returns 0. */ } /* Store text area if it's special */#在kcore中添加kernel的text端 proc_kcore_text_init(); /* Store vmalloc area */#在kcore中添加vmalloc 端 kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, VMALLOC_END - VMALLOC_START, KCORE_VMALLOC);#在kcore中添加module占用的空间 add_modules_range(); /* Store direct-map area from physical memory map */#在kcore中添加低端内存 kcore_update_ram();#注册通知连,以防内存热插拔 register_hotmemory_notifier(&kcore_callback_nb); return 0;}fs_initcall(proc_kcore_init);看过kcore的初始化函数就知道kcore代表的是一个运行时的内存镜像
转载地址:http://bpnmi.baihongyu.com/