2013-05-09 3 views
1

응용 프로그램을 실행이기록 커널 로그인하는 동안 내가 좋아하는 리눅스 커널 내부에 일부 <code>printk</code> 문을 뒀다

printk(KERN_DEBUG " Hello from Kernel "); 

과 같은 a.out 응용 프로그램을 실행하는 동안이 명령의 출력을 기록 할 관심 :

cp /var/log/dmesg oldLog.txt 
./a.out 
cp /var/log/dmesg newLog.txt 
diff oldLog.txt newLog.txt 

하지만이 방법이 작동하지 않는 것 같습니다. newLog.txt와 oldLog.txt는 모두 같습니다. 그러나 "Hello from Kernel"dmesg 명령 출력에서 ​​볼 수 있습니다. 이런 식으로 로그를 캡처하는 쉬운 방법을 알고 있습니까?

두 번째 질문은 loglevel에 관한 것입니다. printk 문에 KERN_DEBUG을 사용했지만 echo 1 > /proc/sys/kernel/printk으로 설정하더라도 dmesg 명령 출력에 여전히 Hello from kernel이 인쇄됩니다.

답변

1

1) printk 디버그 문은 항상 dmesg 명령과 함께 나타나며, loglevel이 설정되어 있는지 여부는 중요하지 않습니다. 디버그 메시지는/var/log/messages에서 찾을 수 있습니다. 2) Loglevel은 콘솔에 인쇄 된 디버그 메시지를 가져 오도록 설정됩니다. 콘솔에서 디버그 메시지를 인쇄하기 위해 우선 순위가 가장 높은 로그 수준 (KERN_EMERG)을 설정하더라도 X 서버 (GUI)가 실행 중이면 디버그 메시지가 콘솔에 표시되지 않습니다. 우선 순위가 높은 printk 메시지를 콘솔에서 콘솔 모드로 점프합니다.