리눅스

리눅스 커널 디버깅 환경 셋팅 (VirtualBox 에 있는 커널을 디버깅)

macro 2010. 10. 15. 17:23
반응형


1. 타겟머신 : 버추얼박스에 디버깅 할 커널이 있고,

2. 버추얼박스의 설정 -> 직렬포트 -> 직렬포트 사용하기 셋팅 -> 포트모드에서 호스트 파이프 선택 -> 파이프 만들기 선택 -> 포트 / 파일경로에 파이프 이름 적는다. 예) /home/macro/serial_com1

3. 개발머신(버춸박스가 아님) : 다음 명령으로 서로 통신할 수 있도록 한다.
     # socat UNIX-CONNECT:/home/macro/serial_com1 PTY,link=/tmp/pty-vm1 &
     


4. 다음과 같이 디버깅 설정을 한다.
  • Target-VM: echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc
  • Dev-VM: gdb ./vmlinux (under the newly built linux kernel folder, should navigate there first)
  • Dev-VM: set remotebaud 115200
  • Dev-VM: target remote /tmp/pty-vm1 (gdb will wait for the target)
  • Target-VM: echo “g” > /proc/sysrq-trigger (you will lose control like cursor)
5. 그러면 타겟에서 반응하게 되고, 개발머신에서는 (gdb) 가 나온다.

6. gdb 에서 c (continue) 를 입력하여 진행시키자. 그러면 이제 타겟이 동작하게 된다.

7. 개발머신에서 gdb를 실행할때, 매번 명령줄 입력이 귀찮으므로,
    /etc/gdb/gdbinit 파일을 다음과 같이 수정하자. 그러면 gdb 만 실행하면 다음 명령 자동 실행됨.
file vmlinux
set remotebaud 115200
target remote /tmp/pty-vm1


( 참고. 만약 타겟, 개발 머신 둘다 VM에서 띄울경우는 3번 항목은 생략하고  /dev/ttyS0 를 이용한다.)




반응형