qemu和gdb的long模式

如果你用qemu调试代码遇到了Remote 'g' packet reply is too long: ...错误,两种可行的解决方案如下:

解决方案一:再次连接

  • 启动gdb连接qemu的方法如下:

> gdb
set arch i386:x86-64:intel
target remote localhost:1234
symbol-file YOUR_KERNEL_FILE
break SOME_FUNCTION_IN_LONG_MODE
continue

  • 出现Remote 'g' packet reply is too long错误后,执行如下命令:

disconnect
set arch i386:x86-64
target remote localhost:1234

  • 注意:第二次执行set命令参数和第一次不同,没有intel

解决方案二:修改gdb源码

  • 注释掉gdb源码文件remote.c中如下代码:

error (_("Remote 'g' packet reply is too long: %s"), rs->buf);

重新编译gdb即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以按照以下步骤启动 qemugdb: 1. 在启动 qemu 时使用 -s 参数,该参数将启用 qemugdbstub。例如:`qemu-system-x86_64 -s -S -hda disk.img` 2. 启动 gdb 并连接到 qemu。在 gdb 中使用以下命令: ``` target remote localhost:1234 ``` 这将连接到运行在本地主机上的 qemu。 3. 现在您可以在 gdb 中执行调试命令,例如设置断点、单步执行等。例如,要设置断点,请使用以下命令: ``` break main ``` 然后,您可以使用 `continue` 命令开始执行并在断点处停止。 希望这可以帮助您启动 qemugdb。 ### 回答2: 要启动QEMUGDB调试器,您可以按照以下步骤进行操作: 1. 在终端或命令提示符中,使用以下命令启动QEMU,加上-gdb选项,并指定GDB服务器的端口号。例如,运行以下命令: ``` qemu-system-x86_64 -gdb tcp::1234 -S -nographic -hda <硬盘镜像文件> ``` 这将启动一个QEMU虚拟机,并在1234端口上启动GDB服务器。-S选项表示暂停虚拟机的执行,等待GDB连接。 2. 打开另一个终端或命令提示符,并使用以下命令启动GDB调试器: ``` gdb ``` 3. 在GDB中,执行以下命令连接到QEMUGDB服务器: ``` target remote localhost:1234 ``` 这将连接GDBQEMUGDB服务器,localhost指向本地主机,1234是服务器的端口号。 4. 接下来,您可以使用GDB的各种命令来调试QEMU虚拟机。例如,您可以使用"break"设置断点,使用"run"或"continue"开始执行虚拟机,使用"next"或"step"单步执行代码,使用"print"查看变量的值等。 ``` break main run next print x ``` 这些是启动并使用QEMU GDB调试器的基本步骤。您可以根据实际需求和调试场景使用更多GDB命令和调试功能。 ### 回答3: 要启动QEMUGDB,你需要按照以下步骤进行操作: 1. 首先,确保已经安装了qemugdb。你可以通过在命令行中输入`qemu-system-* --version`和`gdb --version`来检查它们的安装情况。 2. 确认你要调试的QEMU虚拟机的可执行文件的路径。假设你要调试一个名为`myvm`的虚拟机,执行文件的路径为`/path/to/myvm`。 3. 打开一个终端或命令行窗口,并输入以下命令来启动QEMU虚拟机,并在端口1234上监听GDB连接: ``` qemu-system-* -s -S -hda /path/to/myvm ``` 其中,`qemu-system-*`是指用于启动QEMU的命令,`-s`表示使QEMU进程在端口1234上监听GDB连接,`-S`表示让QEMU进程在启动时暂停执行,`-hda /path/to/myvm`表示将`/path/to/myvm`作为虚拟机的硬盘。 4. 在另一个终端或命令行窗口中,输入以下命令来启动GDB,并连接到QEMU虚拟机: ``` gdb --quiet --tui -ex "target remote localhost:1234" /path/to/myvm ``` 其中,`gdb`是启动GDB的命令,`--quiet`选项用于抑制GDB的冗长输出,`--tui`选项用于在GDB中启用文本用户界面,`-ex "target remote localhost:1234"`选项用于告诉GDB连接到位于本地主机上端口1234的目标,`/path/to/myvm`表示要调试的可执行文件的路径。 5. 在GDB中,你可以使用各种命令来设置断点、单步执行代码等。例如,你可以使用`break function`命令在函数`function`的开头设置断点,使用`continue`命令继续执行代码,使用`next`命令逐过程执行等。 这样,你就可以通过QEMUGDB启动并调试你的虚拟机了。记得在调试完成后,要关闭GDB并退出QEMU虚拟机。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值