드라이버 제작할 때 왜 디버깅 툴을 안 쓰나요?
글쓴이: cshmax / 작성시간: 화, 2008/07/22 - 11:35오전
윈도우 드라이버만 공부하다가
리눅스를 처음 해 보는 학생인데요
리눅스 커널 디버깅 툴에 대한 자세한 설명을 찾기가 힘드네요. (KGDB 같은거 말이죠.)
KGDB를 어렵사리 시도해 봐도 시리얼로 연결해서 하는 것만 나와있고
eth를 사용하는 건 정말... 예제를 따라해도 잘 안 되고..
아무튼
리눅스 드라이버 개발하시는 분들은 이런 디버깅 툴을 잘 안 쓰신다고 하는데
도대체 그 이유가 뭐죠?
어떻게 디버깅 툴을 안 쓰고 개발 하는 거죠?
printk 같은 것만 사용해도 디버깅이 충분히 가능하기 때문인가요?
정말 궁굼합니다.
그리고 자세히 알고 싶습니다.
Forums:
음...
아무래도
Trace32로 디버깅 하거나
회로도보면서 오실로스코프로 파형 찍어가며 디버깅하는 분들이 많으시지 않을까요.
머리를 굴려라! 그래야 먹고 산다.
printk로 가능합니다.
애초에 아주 잘못 만든 코드가 아니라면 적어도 printk로 뭔가를 찍고 난 뒤에 죽겠지요.
(최소한 kernel panic message에서도 정보는 많이 나옵니다)
윈도우 같으면 WinDBG에다 1394나 Serial 연결해서 PC 두대로 디버깅하는 환경이나 livekd 같은거
올려서 로컬 디버깅을 할 수도 있긴 합니다만... 실제로 드라이버 개발자가 문제를 해결할 때는
보통 파랗게(blue screen) 죽은 뒤에 kernel dump를 WinDBG로 역분석하는 경우가 더 많을 겁니다.
printk로 찍는 것과의 차이점이라고 한다면 조금 정보가 더 많다는 정도죠.
디버깅은 원래 자기가 만든 코드의 논리를 검증하는 과정이니 printk나 debugger나 50보 100보인
상황입니다. 좀 더 편리한 툴이 있는가 없는가의 차이인데 리눅스 쪽에서는 개발자들이 크게 관심을
안보이는 차이가 있는거죠. (혹시 누군가 만들어주기를 바라고 있을지도 모릅니다)
kgdb라고.. 오래 전
kgdb라고.. 오래 전 부터 패치가 있었고,
최근 2.6.26 커널엔 x86 과 sparc 에 한해서 기본 포함되어 있습니다만,
어디 쓸 데가 없습니다.
http://linuxmafia.com/faq/Kernel/linus-im-a-bastard-speech.html
OTL
저는 로직 분석기,
저는 로직 분석기, 오실로스코프, printk()만 가지고 했습니다.
경험이 많지 않아서 드라이버 개발에 쓰이는 디버깅 툴을 쓸줄 모르는데다가 익힐만한 시간도 없었고, 드라이버 코드는 대체로 라인수가 많지 않아서 큰 필요성을 느끼지 못한점 때문에 kgdb같은 툴을 사용할 필요성을 느끼지 못하였습니다.
다만, ISR 루틴에 printk()를 넣으면 난감해집니다. ISR 루틴 디버깅은 디버깅용 전역변수를 하나 두고, ISR에서 전역 변수값을 변경하고, 다른 시점에서 이 전역변수를 출력하는 방법으로 디버깅 하였습니다.
------------------------------------------
http://onestep.tistory.com
Just do it!
printk()로 충분하다기
printk()로 충분하다기 보다는 그만큼 작성한 코드를 명확하게 이해하고 있어야 하기 때문이 아닐까요?
------------------------------------------
http://onestep.tistory.com
Just do it!
printk 로 하고 있네요.
딱히 다른방법을 몰라서 printk로만 해결하고 있는네요..
이런 환경에서쓸 정말 쓸만한 툴이 없는지 궁금하네요.??
댓글 달기