首页 > 数据库技术 > 详细

qemu+gdb调试内核出现remote ‘g’ packet reply is too long

时间:2019-12-11 22:53:25      阅读:175      评论:0      收藏:0      [点我收藏+]

今天尝试用qemu+gdb的方式调试内核,但是当设置了断点,程序执行到断点时就报错:remote ‘g’ packet reply is too long,错误图片如下
技术分享图片
解决办法网上了,说是改一下gdb/remote.c的代码,开始一脸懵逼,都不知道改哪里,知道看到了这篇博客:https://blog.csdn.net/baidu_31504167/article/details/93853921。这篇文章讲到了如何避免这个问题
重新下载gdb源码版本可以自己选,应该都行,然后修改源码目录下 gdb/remote.c(在我电脑上是gdb-7.9.1/gdb/remote.c)的这几行代码

if (buf_len > 2 * rsa->sizeof_g_packet)
    error (_("Remote 'g' packet reply is too long: %s"), rs->buf);

改为:

if (buf_len > 2 * rsa->sizeof_g_packet) {
   rsa->sizeof_g_packet = buf_len ;
   for (i = 0; i < gdbarch_num_regs (gdbarch); i++) {
       if (rsa->regs->pnum == -1)
          continue;
       if (rsa->regs->offset >= rsa->sizeof_g_packet)
          rsa->regs->in_g_packet = 0;
       else
          rsa->regs->in_g_packet = 1;
   }
}

至于什么原因我暂时也不清楚,修改完成后编译安装即可,安装过程可见上面链接的文章。

qemu+gdb调试内核出现remote ‘g’ packet reply is too long

原文:https://www.cnblogs.com/myguaiguai/p/12024661.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!