Tôi tìm thấy một vấn đề tương tự (& câu hỏi này) kết nối gdb rất sớm trong quá trình khởi động - như đã đề cập trong các câu trả lời khác, gdb không đánh giá cao kích thước của sổ đăng ký thay đổi từ dưới nó. Vấn đề này có thể được nhìn thấy bằng cách sử dụng set debug remote 1
:
(gdb) set debug remote 1
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
...
Sending packet: $g#67...Ack
Packet received: 000000000000000... <~600 bytes>
(gdb) until *0x1000 # at this address we'll be in a different cpu mode
...
Sending packet: $g#67...Ack
Packet received: 10000080000000000000000000000000800000c... <~1000 bytes>
...
Remote 'g' packet reply is too long: 1000008000000000000000000...
(gdb)
Patching gdb to resize its internal buffer when it sees a too-large packet như được tìm thấy về vấn đề này trong bộ theo dõi gdb lỗi (và các nơi khác), không thực sự làm việc xung quanh vấn đề này, như không vá qemu chỉ gửi 64-bit các gói được kích thước. Tuy nhiên, the latter solution breaks debugging in non-64-bit-modes, và có vẻ như rằng việc sửa chữa cựu có thể không đầy đủ:
Nghe có vẻ khá sai lầm khi được thay đổi mục tiêu sau lưng GDB khi GDB là đã gỡ lỗi nó. Không chỉ kích thước của các gói g/G có thể thay đổi vô tình, nhưng bố trí là tốt. Nếu mô tả mục tiêu thay đổi với cấu hình lại của bạn, nó âm thanh với tôi như GDB sẽ tìm nạp/tính toán lại toàn bộ mô tả mục tiêu . Hôm nay, tôi nghĩ rằng chỉ có thể thực hiện với việc ngắt kết nối/kết nối lại .
- https://sourceware.org/ml/gdb/2014-02/msg00005.html
Các ngắt kết nối/kết nối lại workaround đề cập ở phần cuối của bài viết không xuất hiện để làm việc:
(gdb) disconnect
Ending remote debugging.
(gdb) set architecture i386:x86-64
The target architecture is assumed to be i386:x86-64
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
(gdb) info registers
rax 0x80000010 2147483664
rbx 0x0 0
...
Nguồn
2015-12-16 04:49:54
vm của tôi chạy ubuntu và máy chủ đang chạy debian – contemplatingzombie
Nếu tôi thấy mã gdb, remote.c/* Mô tả của thanh ghi giao thức từ xa. */long sizeof_g_packet; không phù hợp với dự kiến. Có vẻ như gdbserver của bạn không được định cấu hình đúng cách (tôi không chắc lắm). Bạn có đang khởi tạo máy chủ GDB không? Nếu có, phiên bản GDB và GDBSERVER của bạn phù hợp? – Kamath
Tương tự trên trình theo dõi GDB: https://sourceware.org/bugzilla/show_bug.cgi?id=13984 –