리눅스 커널 모듈 프로그램 디버깅하려고 합니다.
글쓴이: hoochoona / 작성시간: 화, 2016/03/15 - 10:23오후
안녕하세요.
고수님들께 하나 물어보려고 합니다.
모듈 프로그램을 만들면서 디버깅하려고 환경을 구축하고있습니다.
kgdboe를 사용해서 원격지에 있는 노드에서 디버깅하는것이 목적인데요.
지금 개발노드에 kgdboe를 설치하고 커널 소스와 빌드 디렉터리를 sshfs로 디버깅 노드에 마운트했습니다.
디버깅 노드에서 마운트된 빌드 디렉터리에 vmlinux 파일을 gdb로 열고 소스코드까지 보이는것과
break point가 잡히는 것, 디버깅을 시작하면 개발노드가 멈추고 gdb 명령으로 동작하는 것 까지 확인했습니다.
개발노드에서 간단한 hello world 모듈 프로그램을 작성하고 컴파일 후 등록한 뒤
디버깅노드에서 gdb로 vmlinux를 열어보았으나 hello world 모듈 프로그램 소스를 못찾아 break point를 걸 수 없더군요.
어떻게하면 모듈 프로그램의 소스를 원격지에 보여지면서 디버깅을 할 수 있을련지요...
Forums:
해결했습니다.
도서 http://lwn.net/Kernel/LDD3/ 의 챕터 4를 참고하다가 해결법을 찾았습니다.
제가 추가하는 모듈 말고도 커널 설치할 때 같이 설치되는 모듈도 디버깅 할 때 코드가 보이지 않았습니다.
알아보니 모듈은 /sys/module/[module name]/sections 디렉터리의 .bss, .text .data 파일을 cat 으로 출력하면 주소가 나오는데
이 주소들을 gdb안에서 입력해주어야 코드를 찾고 디버깅을 할 수 있더군요.
이런식으로 bss, data, text의 주소를 직접 넣어주어야 되는군요.
첨부 된 이미지를 보시면 못찾다가 위 코드를 입력해주니 코드를 찾아 디버깅을 할 수 있게 되었습니다.
-----------------------------
안녕하세요. 후추나입니다.
http://blog.naver.com/chhh92
...
실패는 좋은 경험치.
댓글 달기