본문 바로가기
리눅스

[코딩] printf, printk 사용 자제

by 목가 2015. 8. 14.
반응형

코딩시에 유의할 점 (printf, printk 사용 자제)

printf

프로그램을 작성하시면서 가장 많이 사용하시는 디버깅 방법으로 어떤 것을 사용하시나요? 저는 printf()를 가장 많이 사용합니다. 모듈 프로그래밍하시는 분들께 물어 보면 역시 모듈 프로그래밍에도 printk를 가장 많이 사용한다고 합니다.

그러나 printf()도 매우 무거운 함수 중에 하나입니다. 즉, printf()가 소요하는 시간이 매우 깁니다. 실제 release되는 버전에는 당연히 디버깅을 위한 printf()를 제거하겠지만 디버깅을 위한 것이 아니더라도 printf() 사용은 가급적 피하는 것이 좋습니다.

printk

더욱이 커널 속에서 한 몸이 되어 돌아가는 모듈은 아무래도 다이어트해서 가변운 것이 좋겠습니다. 그러므로 디버깅뿐만 아니라 release 버전에서도 가능한한 printk() 함수를 자제하는 것이 좋습니다.

특히 주의하실 것은 printk()나 시간과 관계있는 루틴에 사용하면 정작 배포용 버전을 만들 때 고생할 수 있습니다. 즉, 디버깅을 위해 printk()를 삽입했는데, 이럴 때에는 모듈이 매우 정상적으로 실행됩니다. 그러나 디버깅을 위한 printk()를 제거하면 매우 엉뚱하게 작동할 수 있다는 것이죠.

또는 printk() 때문에 처음부터 실행이 아예 엉뚱하게 진행될 수 있습니다. 이 모두 printk()가 예상보다 더 긴 지연시간을 발생하기 때문입니다. 그러므로 printk() 나 pritnf()를 사용하실 때에는 항상 조심하셔야 합니다. 특히 시간에 민감한 루틴, 빨리 응답해 주어야하는 루틴에는 특히 주의 하셔야 합니다.

반응형

댓글