qemu+gdb調試內核出現remote ‘g’ packet reply is too long


今天嘗試用qemu+gdb的方式調試內核,但是當設置了斷點,程序執行到斷點時就報錯:remote ‘g’ packet reply is too long,錯誤圖片如下
圖片15
解決辦法網上了,說是改一下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;
   }
}

至於什么原因我暫時也不清楚,修改完成后編譯安裝即可,安裝過程可見上面鏈接的文章。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM