我想阅读并理解Linux内核的内存管理(特别是defrag \ compaction \ migration)。
所以,我关闭.config
中的大小优化(当然使用make menuconfig)并编译......这让我仍然有一个优化的内核。
注意:当我说优化内核时,我的意思是当我使用gdb
并告诉它next
它会跳转时。我不希望这样,我希望能够像在简单的hello世界中一样逐行地遵循代码。
接下来,我编辑Makefile
并与-O2
交换-O0
,这会导致事情中断。
我找到了this,但我不知道我想要哪些文件,因为我不知道兔子洞到底有多远。
我可以使用更通用的选项吗?我理解内存压缩的概念;但是,我希望看到一切发生的地方以及它是如何发生的。
答案 0 :(得分:9)
您无法取消优化内核。您可以对某些功能进行去优化,例如:
void __attribute__((optimize("O0"))) foo(unsigned char data) {
// unmodifiable compiler code
}
但内核作为一个整体需要-O2,因为代码本身的编写假设某些函数将以某种方式进行优化。
很抱歉,你真的需要知道你想要的兔子洞的大小。