As an important tool for embedded software development, QEMU can simulate real processors and peripherals in a pure software manner, allowing embedded programs to run inside the "hardware" simulated by QEMU without requiring real hardware. For debugging on real hardware, communication mechanisms such as JTAG are usually used to observe the running status of the processor and peripherals. For debugging programs running in QEMU, a communication mechanism that allows the outside world to observe the internals (QEMU Guest) is also needed. In this talk, I will introduce multiple mechanisms for QEMU to communicate with the outside, analyze their respective applicable scenarios, and demonstrate how to use Python to observe the status of the QEMU Guest through specific Python script examples.