gdbstub: packet reply is too long

qemu に -s オプションをつけると、qemu の gdbstub が localhost:1234 で立ち上がり、gdb 上で target remote localhost:1234 などとすると接続できますよね. しかし、kvm-88の時点で、現在の qemu では、これを利用することができません. 具体的には、以下のような挙動に陥ります:

(gdb) target remote localhost:1234
Remote debugging using localhost:1234
[New Thread 1]
Remote 'g' packet reply is too long: bae1120000000000000000000000000000000000000000000600000000000000645267b9000000000100000000000000149fbcc70000000000
9fbcc70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0e11fc00
00000008302000060000000680000007b0000007b000000d8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000040cf16407f03000000380000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000801f0000

そして、エラー名で検索してみると、以下のスレッドが出てきます:

http://www.mail-archive.com/kvm@vger.kernel.org/msg08717.html

まとめると、

  • 解決策はあるにはあるが、根本的な解決策ではない. 修正するなら、もっと根本的に変更するべきだ.
  • 私の直したkvmのソースを見てもいいよ.
    • [1] git://git.kiszka.org/kvm-userspace.git gdb-queue
    • [2] git://git.kiszka.org/qemu.git gdb-queue

というわけで、修正がマージされていない様子です. かなり使える機能なので、早く修正されて欲しい気持ちはありますが、確かに保守する方はかなりしんどいのではないかと...(switch...case文で、数値直打ちで分岐してたしなぁ...w)

なお、修正版も試してみたのですが、私の環境では同様のエラーが出てしまいました. まとめると、現段階では動作しないのかな、という結論です.