将BUG_ON打印消息

时间:2012-10-09 05:44:05

标签: linux debugging linux-kernel

我在内核代码中点击了BUG_ON。我想知道当时出了什么问题。 BUG_ON将检查条件,如果确实如此,则会发生恐慌。

BUG_ON将打印/ var / log / messages中的消息吗? 是否会在恐慌之前打印它正在检查的值?

2 个答案:

答案 0 :(得分:4)

是。来自include/asm-generic/bug.h

#ifndef HAVE_ARCH_BUG
#define BUG() do { \
    printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \
    panic("BUG!"); \
} while (0)
#endif

#ifndef HAVE_ARCH_BUG_ON
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0)
#endif

如果您的内核编译得当,BUG_ON会在恐慌之前打印一条消息。

答案 1 :(得分:1)

大多数情况下,消息不会记录到/ var / log / messages。您将能够看到您是否在机器中配置了串行控制台。如果你想要更多细节,你可能需要添加printk并重新编译内核

http://kernelnewbies.org/KernelHacking-HOWTO/Debugging_Kernel

或者您可以收集vmcore以获取有关恐慌的更多详细信息

http://www.dedoimedo.com/computers/crash.html

这适用于suse或rhel。对于其他操作系统,他们可能有类似的机制