리눅스 커널 모듈 프로그램 디버깅하려고 합니다.

hoochoona의 이미지

안녕하세요.
고수님들께 하나 물어보려고 합니다.

모듈 프로그램을 만들면서 디버깅하려고 환경을 구축하고있습니다.
kgdboe를 사용해서 원격지에 있는 노드에서 디버깅하는것이 목적인데요.

지금 개발노드에 kgdboe를 설치하고 커널 소스와 빌드 디렉터리를 sshfs로 디버깅 노드에 마운트했습니다.
디버깅 노드에서 마운트된 빌드 디렉터리에 vmlinux 파일을 gdb로 열고 소스코드까지 보이는것과
break point가 잡히는 것, 디버깅을 시작하면 개발노드가 멈추고 gdb 명령으로 동작하는 것 까지 확인했습니다.

개발노드에서 간단한 hello world 모듈 프로그램을 작성하고 컴파일 후 등록한 뒤
디버깅노드에서 gdb로 vmlinux를 열어보았으나 hello world 모듈 프로그램 소스를 못찾아 break point를 걸 수 없더군요.

어떻게하면 모듈 프로그램의 소스를 원격지에 보여지면서 디버깅을 할 수 있을련지요...

hoochoona의 이미지

도서 http://lwn.net/Kernel/LDD3/ 의 챕터 4를 참고하다가 해결법을 찾았습니다.

제가 추가하는 모듈 말고도 커널 설치할 때 같이 설치되는 모듈도 디버깅 할 때 코드가 보이지 않았습니다.
알아보니 모듈은 /sys/module/[module name]/sections 디렉터리의 .bss, .text .data 파일을 cat 으로 출력하면 주소가 나오는데
이 주소들을 gdb안에서 입력해주어야 코드를 찾고 디버깅을 할 수 있더군요.

add-symbol-file /lib/modules/3.18.28/kernel/drivers/md/dm-multipath.ko 0xffffffffa01d8000 -s .bss 0xffffffffa01dc440 -s .data 0xffffffffa01dc000

이런식으로 bss, data, text의 주소를 직접 넣어주어야 되는군요.

첨부 된 이미지를 보시면 못찾다가 위 코드를 입력해주니 코드를 찾아 디버깅을 할 수 있게 되었습니다.

댓글 첨부 파일: 
첨부파일 크기
Image icon 없음.png21.27 KB

-----------------------------
안녕하세요. 후추나입니다.
http://blog.naver.com/chhh92
...
실패는 좋은 경험치.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.