我试图了解核心转储的生成。是否为用户空间应用程序进程崩溃和内核级崩溃分别生成核心转储?是ulimit -c
两种吗?
答案1
当一个用户态程序崩溃时,它会留下一个core
文件,其中包含当它崩溃时内存内容的副本(这个core
名字来自计算的史前史,当内存曾是 核)。这是由ulimit(1)
命令控制的,它通常被禁用,因为核心文件很大并且容易让新手感到困惑。核心文件可以通过例如调试器与可执行文件和符号表一起分析,以找出发生了什么。
当内核崩溃时,它通常会触发内核恐慌。如果内核发现了一些严重的不一致,指望它正常地写出任何东西确实是不明智的。因此不会生成任何核心,系统就会崩溃。发生问题的地址周围的寄存器和代码的内容被写入控制台。最好保存它(例如拍照)以供以后分析。
类似的情况还有内核哎呀,当内核检测到不被视为致命的不一致时。在这种情况下(如在内核恐慌中),发生问题的地址周围的寄存器和代码的内容将被写入控制台,并被记录。