리눅스 트리의 디바이스 드라이버 소스에서, 나는 dev_dbg(...)
과 dev_err(...)
을 보았는데, 어디에 기록 된 메시지를 찾을 수 있습니까?dev_dbg는 어디에 로그를 쓰나요?
하나의 참고 자료에 #define DEBUG
을 추가하는 것이 좋습니다. 다른 reference에는 동적 디버그와 debugfs가 관련되어 있습니다.
리눅스 트리의 디바이스 드라이버 소스에서, 나는 dev_dbg(...)
과 dev_err(...)
을 보았는데, 어디에 기록 된 메시지를 찾을 수 있습니까?dev_dbg는 어디에 로그를 쓰나요?
하나의 참고 자료에 #define DEBUG
을 추가하는 것이 좋습니다. 다른 reference에는 동적 디버그와 debugfs가 관련되어 있습니다.
dev_dbg()
은 컴파일 플래그에 따라 dynamic_dev_dbg()
, dev_printk()
또는 no-op로 확장됩니다. vprintk_emit()
를 호출
#if defined(CONFIG_DYNAMIC_DEBUG)
#define dev_dbg(dev, format, ...) \
do { \
dynamic_dev_dbg(dev, format, ##__VA_ARGS__); \
} while (0)
#elif defined(DEBUG)
#define dev_dbg(dev, format, arg...) \
dev_printk(KERN_DEBUG, dev, format, ##arg)
#else
#define dev_dbg(dev, format, arg...) \
({ \
if (0) \
dev_printk(KERN_DEBUG, dev, format, ##arg); \
})
#endif
dynamic_dev_dbg()
및 dev_printk()
전화 dev_printk_emit()
.
printk()
만 수행하면이 매우 동일한 기능이 일반 모드에서 호출됩니다. dev_err()
과 같은 나머지 기능은 결국 같은 기능으로 끝납니다.
따라서, 분명히, 버퍼는 모두 커널 인레 날린 버퍼이다.
끝에 기록 된 메시지는 커널 로그 레벨 값 (커널 명령 라인을 통해 또는 procfs의 통하여 변경 될 수 있으면)
dmesg
명령을 실행하여 읽을 수있는 내부 버퍼.버퍼에 공간이있는 한 2의 데이터는 유지됩니다. 제한적이고 원형이므로 새로운 데이터는 이전 데이터를 선점합니다.