반응형
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)
6. gdb 에서 c (continue) 를 입력하여 진행시키자. 그러면 이제 타겟이 동작하게 된다.
7. 개발머신에서 gdb를 실행할때, 매번 명령줄 입력이 귀찮으므로,
/etc/gdb/gdbinit 파일을 다음과 같이 수정하자. 그러면 gdb 만 실행하면 다음 명령 자동 실행됨.
file vmlinux
set remotebaud 115200
target remote /tmp/pty-vm1
( 참고. 만약 타겟, 개발 머신 둘다 VM에서 띄울경우는 3번 항목은 생략하고 /dev/ttyS0 를 이용한다.)
반응형