qemu源码调试

 

命令行:

[root@node1 qemu-debug]# gdb -tui --args /usr/local/bin/qemu-system-x86_64 -name win7 -machine pc-i440fx-5.1,accel=kvm,usb=off,dump-guest-core=off -cpu IvyBridge-IBRS,+ss,+ht,+vmx,+pcid,+hypervisor,+arat,+tsc_adjust,+stibp,+ssbd,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff -m 4096 -smp 3,maxcpus=6,sockets=2,cores=3,threads=1 -uuid 0726596f-258d-4d66-ba42-bb5c09172fa2 -no-user-config -nodefaults -rtc base=localtime,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x5.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x5 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x5.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x5.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 -drive file=/var/lib/libvirt/images/win7.qcow2,format=qcow2,if=none,id=drive-virtio-disk0 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x8,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=/var/lib/libvirt/images/win7-1.qcow2,format=qcow2,if=none,id=drive-virtio-disk1 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x9,drive=drive-virtio-disk1,id=virtio-disk1 -drive file=/mnt/iso/cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso,format=raw,if=none,id=drive-ide0-0-1,readonly=on -device ide-cd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1,bootindex=1 -drive if=none,id=drive-fdc0-0-0 -global isa-fdc.driveA=drive-fdc0-0-0 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -device usb-tablet,id=input0,bus=usb.0,port=1 -spice port=5900,addr=0.0.0.0,disable-ticketing,image-compression=off,seamless-migration=on -vga qxl -global qxl-vga.ram_size=67108864 -global qxl-vga.vram_size=67108864 -global qxl-vga.vgamem_mb=16 -global qxl-vga.max_outputs=1 -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=2 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=3 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 -msg timestamp=on

对应的线程:

//如上的cpu配置,-smp 3,maxcpus=6,sockets=2,cores=3,threads=1,cores=3就表示只会开启3个vcpu线程 (注:-smp 后面的3是故意写错的,用来调试现象的)
(gdb) bt   //这里是vcpu的线程
#0  0x00007f407990f8d7 in ioctl () at /lib64/libc.so.6
#1  0x000055f58a434f43 in kvm_vcpu_ioctl (cpu=0x55f58be36190, type=44672) at /home/work/qemu/accel/kvm/kvm-all.c:2631
#2  0x000055f58a4347ea in kvm_cpu_exec (cpu=0x55f58be36190) at /home/work/qemu/accel/kvm/kvm-all.c:2468
#3  0x000055f58a51995f in qemu_kvm_cpu_thread_fn (arg=0x55f58be36190) at /home/work/qemu/softmmu/cpus.c:1188
#4  0x000055f58a9e2753 in qemu_thread_start (args=0x55f58be5c3b0) at util/qemu-thread-posix.c:521
#5  0x00007f4079befdd5 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f4079918ead in clone () at /lib64/libc.so.6

(gdb) bt   //rcu线程,用来提供读写锁的
#0  0x00007f40799131c9 in syscall () at /lib64/libc.so.6
#1  0x000055f58a9e23dd in qemu_futex_wait (f=0x55f58b3cb174 <rcu_call_ready_event>, val=4294967295) at /home/work/qemu/include/qemu/futex.h:29
#2  0x000055f58a9e25a6 in qemu_event_wait (ev=0x55f58b3cb174 <rcu_call_ready_event>) at util/qemu-thread-posix.c:460
#3  0x000055f58a9ed023 in call_rcu_thread (opaque=0x0) at util/rcu.c:258
#4  0x000055f58a9e2753 in qemu_thread_start (args=0x55f58bb04b30) at util/qemu-thread-posix.c:521
#5  0x00007f4079befdd5 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f4079918ead in clone () at /lib64/libc.so.6

(gdb) bt   //qemu主线程循环
#0  0x00007f407990e2cf in ppoll () at /lib64/libc.so.6
#1  0x000055f58aa02a8d in qemu_poll_ns (fds=0x55f58cac5880, nfds=6, timeout=15399786) at util/qemu-timer.c:347
#2  0x000055f58a9fc2a8 in os_host_main_loop_wait (timeout=15399786) at util/main-loop.c:235
#3  0x000055f58a9fc3cc in main_loop_wait (nonblocking=0) at util/main-loop.c:516
#4  0x000055f58a52db17 in qemu_main_loop () at /home/work/qemu/softmmu/vl.c:1676
#5  0x000055f58a982946 in main (argc=91, argv=0x7ffe41d4fca8, envp=0x7ffe41d4ff88) at /home/work/qemu/softmmu/main.c:49

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值