2011-02-04 26 views
13

Tôi gặp sự cố với gỡ lỗi từ xa.gdb gỡ lỗi chéo từ xa không thành công với "Remote 'g' trả lời gói quá dài"

Máy chủ: máy tính xách tay intel i5 với ubuntu 10.10 x86 Mục tiêu: Freescale iMX35 (iMX35 PDK) cánh tay 11 Môi trường phát triển: Thư viện Qt Creator 2.1RC và Qt4.7.1. Trình biên dịch cánh tay trong đường dẫn: /opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin

arm-none-linux-gnueabi- gcc-4.1.2 arm-none-linux-gnueabi-objdump arm-none-linux-gnueabi-addr2line arm-none-linux-gnueabi-gccbug
arm-none-linux-gnueabi-ranlib arm-none-linux- gnueabi-ar
arm-none-linux-gnueabi-gcov arm-none-linux-gnueabi-readelf arm-none-linux-gnueabi-as
arm-none-linux-gnueabi-run arm-none-linux- gnueabi-C++
arm-none-linux-gnueabi-size arm-none-linux-gnueabi-C++ filt
arm-none-linux-gnueabi-gprof arm-none-linux-gnueabi-strings arm-none-linux-gnueabi-cpp arm-none-linux-gnueabi-ld
arm-none-linux-gnueabi-strip arm -none-linux-gnueabi-g ++
cánh tay-none-linux-gnueabi-nm cánh tay-none-linux-gnueabi-gcc
cánh tay-none-linux-gnueabi-objcopy

mục đích là để gỡ lỗi một dự án được tạo bằng Qt. Vì vậy, tôi chỉ cần tạo một Dự án Nhanh Qt -> Ứng dụng Nhanh Qt tạo ứng dụng Hello World đơn giản (C++/Qml) Tôi biên dịch nó (gỡ lỗi hoặc phát hành) và hoạt động tốt trên mục tiêu. Vì vậy, tôi khá chắc chắn rằng biên dịch chéo không liên quan đến vấn đề tôi sẽ chỉ cho bạn.

tôi tải gdb 7.2 và thực hiện các hoạt động sau:

$ export PATH =/opt/Freescale/usr/local/gcc-4.1.2-glibc-2,5-nptl-3/cánh tay-none -linux-gnueabi/bin: $ PATH
$ cd /home/elux/iMX35/gdb-7.2/
$ ./configure --target = tay-none-linux-gnueabi --build = i686
$ make
$ sudo make install

$ export CC = arm-none-linux-gnueabi-gcc
$ xuất LD = arm-none-linux-gnueabi-ld
$ cd gdb/gdbserver/
$ ./configure --build = i386 --host = arm-none-linux-gnueabi --target = arm -none-linux- gnueabi
$ make

$ sudo cp gdbserver/home/elux/MX35/ltib/rootfs/usr/bin/(để sao chép gdbserver để nhắm mục tiêu)

Sau đó trên mục tiêu:

$ gdbserver 10.10.10.1: 4000 Test
Quá trình kiểm tra được tạo; pid = 2194
Lắng nghe trên cổng 4000

Trên mục tiêu:

$ cánh tay-none-linux-gnueabi-gdb thử nghiệm (Test là cross-biên dịch nó Qt Creator trong chế độ gỡ lỗi) GNU gdb (gDB) 7.2
bản quyền (C) 2010 Free Software Foundation, Inc.
Giấy phép GPLv3 +: GNU GPL phiên bản 3 hay muộn http://gnu.org/licenses/gpl.html
Đây là phần mềm miễn phí: bạn có thể tự do thay đổi và phân phối lại nó.
KHÔNG CÓ BẢO HÀNH, trong phạm vi pháp luật cho phép. Nhập "hiển thị sao chép"
và "hiển thị bảo hành" để biết chi tiết.
GDB này được định cấu hình là "--host = i686 --target = arm-none-linux-gnueabi".
Để được hướng dẫn báo cáo lỗi, vui lòng xem:
http://www.gnu.org/software/gdb/bugs/ ...
ký Reading từ /home/elux/iMX35/ltib/rpm/BUILD/qt-everywhere-opensource-src-4.7.1/nền tảng/Test- build-arm/Test ... hoàn thành.
(gdb) nhắm mục tiêu từ xa 10.10.10.2:4000
Gỡ lỗi từ xa bằng cách sử dụng 10.10.10.2:4000
cảnh báo: Không thể phân tích cú pháp mô tả đích XML; Hỗ trợ XML đã bị tắt tại thời điểm biên dịch
cảnh báo: Không thể tìm thấy chức năng điểm ngắt liên kết động.
GDB sẽ không thể gỡ lỗi trình khởi tạo thư viện được chia sẻ
và theo dõi mã động được tải một cách rõ ràng.
0x400007e0 in ??()
(gdb)

(gdb) thiết solib-tuyệt đối-prefix/home/elux/iMX35/ltib/rootfs/
ký Reading từ/home/elux/iMX35/ltib/rootfs/lib/ld-linux.so.3 ... hoàn tất.
Ký hiệu được tải cho /home/elux/iMX35/ltib/rootfs/lib/ld-linux.so.3

nhưng

(gdb) thiết lập kiến ​​trúc ARMv5TE
Kiến trúc mục tiêu được giả định là ARMv5TE
từ xa 'g' gói tin trả lời quá dài: 00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000

(gdb) b chính
từ xa trả lời 'g' gói là quá dài: 00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Bạn đã có bất kỳ ý tưởng gì vấn đề này có liên quan đến? Làm thế nào tôi có thể giải quyết nó?

Trả lời

7

Tôi đã gặp sự cố tương tự này khi cố gắng gỡ lỗi một ARM Freescale trên máy i5 chạy Ubuntu 11,10 64 bit.

Bản sửa lỗi phù hợp với tôi là chỉ định cờ --with-expat khi định cấu hình gdb. Tôi cũng phải cài đặt gói libexpat1-dev.

Explanation here

+0

Đây là câu trả lời đúng. – BHS

13

Như tôi đã chạy vào này thời gian gần đây trên Ubuntu 12.04 (x86_64) và giải quyết nó theo một cách khác, tôi nghĩ rằng tôi muốn bình luận. Các kicker trong trường hợp này là Ubuntu dường như có gdb với libexpat được kích hoạt. Một số mày mò sau và điều này giải quyết nó cho tôi:

bộ kiến ​​trúc i386: x86-64: intel

Vì vậy, nó dường như điều này có thể xảy ra khi có sự không phù hợp của kiến ​​trúc là tốt.

+2

Không biết về OP nhưng điều đó đã khắc phục được sự cố của tôi. Cảm ơn nhiều. –

+2

Nếu sự cố vẫn tiếp diễn sau khi thiết lập kiến ​​trúc, đó có thể là vấn đề về chuyển đổi kích thước đăng ký: http://stackoverflow.com/a/34304137/151464 –

9

Tôi đã có thể sử dụng gdb-multiarch thay thế và giải quyết được sự cố của mình.

Các vấn đề liên quan