diff options
Diffstat (limited to 'gitlab/issues/target_missing/host_missing/accel_KVM/1274.toml')
| -rw-r--r-- | gitlab/issues/target_missing/host_missing/accel_KVM/1274.toml | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/gitlab/issues/target_missing/host_missing/accel_KVM/1274.toml b/gitlab/issues/target_missing/host_missing/accel_KVM/1274.toml new file mode 100644 index 00000000..88d092f7 --- /dev/null +++ b/gitlab/issues/target_missing/host_missing/accel_KVM/1274.toml @@ -0,0 +1,42 @@ +id = 1274 +title = "Cannot debug init using \"qemu -s -S\" if init is compiled dynamically or if kvm is enabled" +state = "closed" +created_at = "2022-10-25T06:37:16.506Z" +closed_at = "2023-12-01T19:56:42.721Z" +labels = ["Documentation", "GDB", "accel: KVM"] +url = "https://gitlab.com/qemu-project/qemu/-/issues/1274" +host-os = "Debian sid (as of 2022-10-22)" +host-arch = "x86_64" +qemu-version = "QEMU emulator version 7.1.0 (Debian 1:7.1+dfsg-2+b1)" +guest-os = "Debian sid (as of 2022-10-22)" +guest-arch = "x86_64" +description = """I'm trying to connect from host to init process running in guest. I'm using this guide: https://qemu-project.gitlab.io/qemu/system/gdb.html . Everything works well, but there is two problems: +1. Debugging stops to work if I add "-enable-kvm" +2. Debugging stops to work if I remove "-static" when compiling init""" +reproduce = """I have absolutely fresh Debian sid system (as of 2022-10-22). I create the following file on it: +```c +#include <stdio.h> + +int +main () +{ + printf ("a\\n"); + printf ("b\\n"); + for (;;); +} +``` + +Then I compile it so: `gcc -static -g a.c`. Result is saved as `/root/a.out`. Then I run `sync; echo 3 > /proc/sys/vm/drop_caches; sync` to make sure this `/root/a.out` actually got to disk. + +Then I start the host system inside of qemu using well-known `-snapshot /dev/sda` trick. Exact command is here: + +```bash +qemu-system-x86_64 -daemonize -m 300M -s -S -kernel /vmlinuz -initrd /initrd.img -snapshot -append "root=/dev/sda init=/root/a.out" -drive file=/dev/sda,format=raw +``` + +(As you guessed, my disk has no partitions, it directly stores ext4 filesystem.) + +Then I type on host `gdb ./a.out`. And then inside of gdb I type `target remote localhost:1234`, then `br 7` (line 7 is `printf ("b\\n")`, then `c`. Then guest OS boots and reaches init (i. e. `/root/a.out`). And then gdb actually pauses on line 7. I. e. everything works! + +But if I add `-enable-kvm` to qemu command line OR remove `-static` from gcc command line, then breakpoint doesn't work, i. e. gdb doesn't pause on breakpoint, the execution continues and the execution fails to infinite loop.""" +additional = "n/a" |