나는 BUG_ON
을 커널 코드에 쳤다. 나는 그 때 잘못 된 것이 무엇인지 알고 싶다. BUG_ON
은 조건을 검사하고 참이면 패닉 상태가됩니다.Will BUG_ON 인쇄 메시지
BUG_ON
메시지를/var/log/messages에 출력 하시겠습니까? 당황하기 전에 확인할 값을 출력합니까?
나는 BUG_ON
을 커널 코드에 쳤다. 나는 그 때 잘못 된 것이 무엇인지 알고 싶다. BUG_ON
은 조건을 검사하고 참이면 패닉 상태가됩니다.Will BUG_ON 인쇄 메시지
BUG_ON
메시지를/var/log/messages에 출력 하시겠습니까? 당황하기 전에 확인할 값을 출력합니까?
예. 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
는 당황하기 전에 메시지를 인쇄합니다.
메시지는 대부분/var/log/messages에 기록되지 않습니다. 시스템에 직렬 콘솔을 구성했는지 확인할 수 있습니다. 당신이 세부 사항을 더 원하는 경우 커널에게
http://kernelnewbies.org/KernelHacking-HOWTO/Debugging_Kernel
을의 printk를 추가하고 다시 컴파일해야 할 수도 있습니다 또는 당신은
http://www.dedoimedo.com/computers/crash.html
이 수세 또는 작동 공황에 대한 자세한 정보를 얻을 수있는이 vmcore를 수집 할 수 있습니다 rhel. 다른 OS의 경우 비슷한 메커니즘을 가지고있을 수도 있습니다.
메시지는 로거가 쓸 수있을만큼 시스템을 계속 실행해야하므로 메시지가'/ var/log/messages'에 ** 로그되지 않습니다. 디스크에. 공포는 시스템을 거의 즉시 죽인다. – duskwuff