qemu를 사용하여 Linux 커널을 디버그하기 위해 gdb의 논스톱 모드를 사용하는 방법

qemu를 사용하여 Linux 커널을 디버그하기 위해 gdb의 논스톱 모드를 사용하는 방법

저는 Linux 커널을 디버깅하기 위해 qemu와 gdb를 사용하고 있습니다. 다른 스레드가 계속 실행되는 동안 한 스레드를 중지하고 싶습니다. 목표를 달성하는 데 도움이 되는 non-stop이라는 명령이 gdb에 있다는 것을 발견했습니다. gdb의 논스톱 모드 세부 내용은 다음과 같습니다.https://sourceware.org/gdb/current/onlinedocs/gdb.html/Non_002dStop-Mode.html

다음은 커널 이미지를 사용하여 qemu를 실행하는 명령입니다.

sudo qemu-system-x86_64 -smp 4 -m 8G
-drive if=ide,index=0,format=qcow2,file=./CentOS-7-x86_64-GenericCloud-2003.qcow2
-nographic -enable-kvm
-device e1000,netdev=net0 -netdev user,id=net0
-s -S

다른 터미널에서는 "gdb vmlinux"를 실행합니다. 그런 다음 튜토리얼에서 말한 대로 논스톱 모드를 활성화했습니다.

(gdb) set target-async 1
(gdb) set non-stop on
(gdb) target remote:1234
Remote debugging using :1234
Non-stop mode requested, but the remote does not support non-stop.

qemu는 논스톱 모드를 지원하지 않는 것 같습니다. gdb 및 qemu에서 논스톱 모드를 활성화하기 위해 추가로 수행해야 할 작업이 있나요? 지원되지 않는 경우 다른 스레드가 gdb에서 계속 실행되도록 하면서 스레드를 중지하려면 어떻게 해야 합니까?

관련 정보