커널 패닉..Call trace 추적관련

swunk의 이미지

커널 관련 코드를 고치고 있습니다...

이거 하루에도 족히 100번은 시스템을 껐다 켜다 하는거 같네요 (소스 고치고, 재컴팔 하고 부팅하고 패닉나고...계속 반복)...며칠째 이짓거리를 했더니 머리 아파 주겠습니다.

그래서 질문 드립니다.

커널 패닉이 나면 다행히 call trace를 찍어 주고 죽는데...
사실 지금 까지는 call trace 정보를 잘 살펴보지도 않았습니다...맘이 급하기도 하고 그렇게 도움되는 정보도 없고해서..그런데 도저히 이짓거리를 반복을 못하겠어서 call trace 정보를 살펴보니...
이놈이 찍어 주는 정보가 심볼 주소를 순서대로 찍고 죽더군요...
그런데 이게 커널 내에 exprot 된 심볼 주소들은 proc/ksyms 혹은 System.map 에 주소들이 나와 있는데...그렇지 않고 모듈내에 정의되어 있는 함수들 중 export 되어 있지 않는 함수들은 심볼 주소들이 상기 파일들에 나와 있지 않더군요...

모듈내에 정의 되어 있는 함수들 중 export 되어 있지 않은 함수들의 심볼 주소 값을 찾으려면 어떻게 해야 할까요 ? 분명 콜 트레이스를 찍는 걸로 봐서는 어딘가에 그 값들이 저장 되어 있는것 같은데요...

답변 부탁드립니다...

머리가 아프고, 정신이 없어서 질문을 옳바르게 했나 모르겠습니다...

eungkyu의 이미지

커널 컴파일할 때 디버그 정보를 넣어서 컴파일한 경우 알아서 찾아서 찍어주는 것으로 알고 있습니다. Kernel Hacking쪽에서 debug info쪽을 찾아보세요. 물론 모듈 컴파일할 때도 넣어줘야 하구요.

그리고 단순히 버그를 찾는다던가 하는 작업이 아니고 본격적으로 커널에서 개발하는 것이라면 그냥 하기는 조금 힘듭니다. 하드웨어 디바이스 드라이버 관련된 것이 아니면 uml을 이용해서 작업하는 것이 제일 편하구요. 컴퓨터 한대에서 다 처리할 수 있으니.. 실제 컴퓨터를 이용해야 하는 것이라면 kgdb같은 것을 이용해 보시기 바랍니다.

그리고 Oops 메시지에서 나오는 stacktrace는 아무래도 소스 라인 정보가 자세히 안나와서 쉽진 않은데 kcore를 이용하여 gdb를 띄운다음 disassemble을 해서 열심히 찾아보는게 그나마 찾기가 수월할 것 같네요.

빨리 해결하시기를~

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.