커널 디버거를 쓰려면 2대의 머신이 있어야 하더군요...
한대의 컴퓨터에서 커널 소스 분석에 효율적인 방법이 있을까요??
주말은 소스코드와 함께 지내야 겠군요...
질문에 답변이 아니라.. 죄송하네요..
커널 디버거 2대의 머신.. 이것에 대한 정보 부탁드립니다. ^^;
잠이 들어야지만 꿈을 꿀수 있는것인가? 우리는 항상 꿈을 쫓아 가며 살아가는 사람들..
http://kgdb.sourceforge.net/
간단한 설명을 하자면... 개발용 머신과 테스트용 머신으로 구분하여 합니다. 테스트용 머신에는 kgdb 패치된 커널 이미지로 부팅하고 개발용 머신에서는 gdb로 트레이스 할 수 있습니다.
위의 URL에 문서도 잘 나와있으니 참고하세요 사실 전 무식해서 자세한 설명을 못하겠어요... ^^;
미래를 수정할 수 있는 때는 현재이다.
단지 분석만 하시는거라면 ctags + vim + cscope + screen을 사용하시는게 좋을겁니다. 디버거를 사용하여 분석한다는 의미를 이해 못하겠습니다. 분석을 하는거라면 소스를 보는것이 가장 좋지 않나요?
gdb로 하는 것처럼 single stepping을 해 보고 싶으신 것 같은데요... 소스만 봐서 안 되는 것들도 있죠.
--feanor
user-mode linux 는 어떨까요.
제가 질문을 서투르게 했군요. 게시판 분류도 제대로 못하고... 우선 답변 달아주셔서 감사하고요. 전 말씀해주신 툴은 전 아직 익숙치 못해 source insight 를 이용하고 있고요. 참 보기 편하다라고요.
전 IDE driver를 봐야합니다. 제가 생각한 것은 디스크에 write/read하는 것을 디버거로 통해서 step by step으로 관찰하는 것이고요.
제가 커널 소스를 보는 것이 익숙치 못합니다. 뚫어져라 쳐다보고 있어도 진도도 잘 안 나가고요.. ^^;
그래서 제가 질문을 드렸던 것은 고수님들이 커널소스(드라이버부분)를 분석하실 때 어떤 방식으로 접근하시는 가를 알고 싶었습니다.
처음에 초기화 코드 부분은 순차적으로 접근을 하는게 좋을것 같습니다. 그리고 님과 같이 특정 device driver를 분석하시는 경우라면 open() system call을 호출하고 진행되는 과정을 추적해 보시고...
그리고 나서 read(), write() system call의 호출 과정을 추적해 보시면 분석하시는 한 방법이 것입니다만.... 책이나 문서를 참고하여 전체적인 윤곽을 먼저 잡으시고 소스 레벨로 접근하시는게 좋을것 같습니다.
더디 가는것 같지만 너무 빨리갈려고 하면 쉬 발병나기 쉽습니다.
갑자기 궁금해 졌는데 리누즈 아져씨도 kgdb를 쓸까요??
요즘은 수세리눅스를 쓴다는것까지는 들은것 같은데 커널 개발은 뭘로 할까요?
-- Linux강국 KOREAhttp://ydongyol.tistory.com/
gdb를 쓴다고 하긴 하지만
disassemble할때 외엔 안쓴다고 합니다.
-_-;
소스를 보는게 최강이라고 리누즈 아저씨가
자주 말하곤 하죠;;
IDE 쪽이라면... 시스템콜하고 직접적인 관련은 적습니다. 시스템콜과 직접적인 연관이 있는 것은 오히려 파일시스템쪽입니다.
유저모드 어플들 -> 시스템콜 -> 파일 시스템드라이버(ext2 등...) -> ...
파일 시스템 뒷쪽으로는... 디스크 스케줄링 알고리즘도 들어가구요... 블록 디바이스 드라이버도 있고... 캐슁도 있고... 그다음에 아마 실제 IDE 를 통해서 읽기/쓰기 하는쪽이죠...
확실하지 않내요... 많이 까먹어서... ㅠ,ㅠ
IDE 쪽은 커널 구조에 대해서 좀더 공부하신다면... 쉽게 찾으 실 수 있을 것 같습니다. 소스보다는... 우선 다른 분들이 분석해 놓으신 책이나, 잡지 연재 내용 을 보시는게 좋을 것 같습니다.
예전에 리눅스 드라이버 작업할 때도, kgdb 를 알고는 있었지만... 컴터두 2대 필요하고 번거로운 일이 많아서, 그냥 작업했었습니다. ^^; kgdb를 통하지 않아도 proc 등을 통해서... 어느정도의 디버깅은 가능합니다.
제가 가지고 있는 자료라면 T13의 ATA 문서하고 리눅스 커널의 이해, 리눅스 디바이스 드라이버... 이 정도인데 죄송하지만 조그만 더 자세히 알려주시면 좋겠습니다. 잡지라면 어떤 잡지 인지??
http//lxr.linux.no/source/?v=2.4.18 전 여기에 익숙해 졌습니다.
순간을 지배하는 사람이 인생을 지배한다.
텍스트 포맷에 대한 자세한 정보
<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]
Re: 커널 디버거를 쓰지 않고 커널 소스 분석법 ??
질문에 답변이 아니라.. 죄송하네요..
커널 디버거 2대의 머신.. 이것에 대한 정보 부탁드립니다. ^^;
잠이 들어야지만 꿈을 꿀수 있는것인가?
우리는 항상 꿈을 쫓아 가며 살아가는 사람들..
[url]http://kgdb.sourceforge.net/[/url]
http://kgdb.sourceforge.net/
간단한 설명을 하자면...
개발용 머신과 테스트용 머신으로 구분하여 합니다.
테스트용 머신에는 kgdb 패치된 커널 이미지로 부팅하고
개발용 머신에서는 gdb로 트레이스 할 수 있습니다.
위의 URL에 문서도 잘 나와있으니 참고하세요
사실 전 무식해서 자세한 설명을 못하겠어요... ^^;
미래를 수정할 수 있는 때는 현재이다.
디버깅 답변은 아닙니다만...
단지 분석만 하시는거라면 ctags + vim + cscope + screen을 사용하시는게 좋을겁니다.
디버거를 사용하여 분석한다는 의미를 이해 못하겠습니다.
분석을 하는거라면 소스를 보는것이 가장 좋지 않나요?
gdb로 하는 것처럼 single stepping을 해 보고 싶으신 것
gdb로 하는 것처럼 single stepping을 해 보고 싶으신 것 같은데요... 소스만 봐서 안 되는 것들도 있죠.
--feanor
user-mode linux 는 어떨까요.
user-mode linux 는 어떨까요.
[quote]단지 분석만 하시는거라면 ctags + vim + cscop
제가 질문을 서투르게 했군요. 게시판 분류도 제대로 못하고...
우선 답변 달아주셔서 감사하고요. 전 말씀해주신 툴은 전 아직 익숙치 못해
source insight 를 이용하고 있고요. 참 보기 편하다라고요.
전 IDE driver를 봐야합니다.
제가 생각한 것은 디스크에 write/read하는 것을 디버거로 통해서
step by step으로 관찰하는 것이고요.
제가 커널 소스를 보는 것이 익숙치 못합니다.
뚫어져라 쳐다보고 있어도 진도도 잘 안 나가고요.. ^^;
그래서 제가 질문을 드렸던 것은
고수님들이 커널소스(드라이버부분)를 분석하실 때 어떤 방식으로 접근하시는
가를 알고 싶었습니다.
미래를 수정할 수 있는 때는 현재이다.
..
처음에 초기화 코드 부분은 순차적으로 접근을 하는게 좋을것 같습니다.
그리고 님과 같이 특정 device driver를 분석하시는 경우라면 open() system call을 호출하고 진행되는 과정을 추적해 보시고...
그리고 나서 read(), write() system call의 호출 과정을 추적해 보시면 분석하시는 한 방법이 것입니다만....
책이나 문서를 참고하여 전체적인 윤곽을 먼저 잡으시고 소스 레벨로 접근하시는게 좋을것 같습니다.
더디 가는것 같지만 너무 빨리갈려고 하면 쉬 발병나기 쉽습니다.
갑자기 궁금해 졌는데..
갑자기 궁금해 졌는데 리누즈 아져씨도 kgdb를 쓸까요??
요즘은 수세리눅스를 쓴다는것까지는 들은것 같은데 커널 개발은 뭘로 할까요?
--
Linux강국 KOREA
http://ydongyol.tistory.com/
gdb를 쓴다고 하긴 하지만disassemble할때 외엔 안쓴다고
gdb를 쓴다고 하긴 하지만
disassemble할때 외엔 안쓴다고 합니다.
-_-;
소스를 보는게 최강이라고 리누즈 아저씨가
자주 말하곤 하죠;;
IDE 쪽이라면... 시스템콜하고 직접적인 관련은 적습니다. 시스템콜과
IDE 쪽이라면... 시스템콜하고 직접적인 관련은 적습니다. 시스템콜과 직접적인 연관이 있는 것은 오히려 파일시스템쪽입니다.
유저모드 어플들 -> 시스템콜 -> 파일 시스템드라이버(ext2 등...) -> ...
파일 시스템 뒷쪽으로는... 디스크 스케줄링 알고리즘도 들어가구요...
블록 디바이스 드라이버도 있고... 캐슁도 있고... 그다음에 아마 실제 IDE 를 통해서 읽기/쓰기 하는쪽이죠...
확실하지 않내요... 많이 까먹어서... ㅠ,ㅠ
IDE 쪽은 커널 구조에 대해서 좀더 공부하신다면... 쉽게 찾으 실 수 있을 것 같습니다. 소스보다는... 우선 다른 분들이 분석해 놓으신 책이나, 잡지 연재 내용
을 보시는게 좋을 것 같습니다.
예전에 리눅스 드라이버 작업할 때도, kgdb 를 알고는 있었지만...
컴터두 2대 필요하고 번거로운 일이 많아서, 그냥 작업했었습니다. ^^;
kgdb를 통하지 않아도 proc 등을 통해서... 어느정도의 디버깅은 가능합니다.
제가 가지고 있는 자료라면 T13의 ATA 문서하고 리눅스 커널의 이
제가 가지고 있는 자료라면 T13의 ATA 문서하고
리눅스 커널의 이해, 리눅스 디바이스 드라이버...
이 정도인데
죄송하지만 조그만 더 자세히 알려주시면 좋겠습니다.
잡지라면 어떤 잡지 인지??
미래를 수정할 수 있는 때는 현재이다.
http//lxr.linux.no/source/?v=2.4.18전 여
http//lxr.linux.no/source/?v=2.4.18
전 여기에 익숙해 졌습니다.
순간을 지배하는 사람이 인생을 지배한다.
댓글 달기