小编Noa*_*iko的帖子

如何在没有 TCG 和 KVM 的情况下运行 QEMU

我试图在 QEMU 虚拟机运行时关闭虚拟核心。

为此,我需要使用qemu_cpu_kick()cpus.c 中的函数:

void qemu_cpu_kick(CPUState *cpu)
{
    qemu_cond_broadcast(cpu->halt_cond);
    if (!tcg_enabled() && !cpu->thread_kicked) {
            qemu_cpu_kick_thread(cpu);
            cpu->thread_kicked = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

它运行良好 - 仅当我启用 KVM 时。但是,我需要禁用 KVM,一旦禁用 KVM,该tcg_enabled()函数就会返回 true,并且 cpu 不会关闭。

可以禁用TCG吗?

我没有找到任何关于 TCG 的旋钮;--disable-tcg以及其他试验都不起作用。我尝试使用 重新配置我的编译--disable-tcg-interpreter,但仍然没有任何变化。

那么,如何禁用 TCG 呢?或者,有没有更好的方法来关闭虚拟CPU?

谢谢!

kvm qemu

6
推荐指数
1
解决办法
4028
查看次数

远程gdb调试不会在断点处停止

调试修改后的Linux-3.11.0内核时遇到问题.为了调试代码,我使用:

  1. GDB 7.6
  2. QEMU 1.6.5
  3. Linux内核3.11.0

我的系统有运行Ubuntu 12.10的Intel(R)Core(TM)i7-2760QM CPU @ 2.40GHz

我使用'make menuconfig'创建的配置文件编译了修改后的内核.(修改了"内核黑客"类别)

这里引用了一些.config文件行(我发现相关):

CONFIG_DEBUG_INFO=y 
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
Run Code Online (Sandbox Code Playgroud)

我使用qemu和"-S"选项来启动我的内核,并使用gdb我连接到qemu并恢复它的执行:

(gdb) target remote :1234
(gdb) continue
Run Code Online (Sandbox Code Playgroud)

设置断点时,例如: break schedule我收到一条确认消息,例如:

Breakpoint 1 at 0xffffffff81736400: file kernel/sched/core.c, line 2509.
Run Code Online (Sandbox Code Playgroud)

所以到这里一切似乎都很好!

问题是gdb和qemu不会在断点处停止!他们都只是继续跑......

我尝试按照某些地方的建议设置硬件断点,但是我收到了消息:

No hardware breakpoint support in the target.
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为我设置了CONFIG_HAVE_HW_BREAKPOINT.

我也CONFIG_DEBUG_RODATA像其他地方的建议一样,但仍然没有结果......

我试图乱用.config文件,如下所示:qcmu中的gdbserver不会在断点上停止,但我无法弄清楚工作.config文件和我的.config文件之间的相关差异......(也有差异很大!)

谁能帮帮我吗?

谢谢!!

gdb operating-system qemu linux-kernel gdbserver

4
推荐指数
1
解决办法
3504
查看次数

标签 统计

qemu ×2

gdb ×1

gdbserver ×1

kvm ×1

linux-kernel ×1

operating-system ×1