2011-02-04 79 views
13

我有遠程調試問題。gdb遠程交叉調試失敗,並顯示「Remote'g'數據包回覆過長」

主持人:筆記本電腦的英特爾酷睿i5與Ubuntu 10.10 86 目標:飛思卡爾iMX35(iMX35 PDK)ARM 11 開發環境:Qt Creator的2.1RC和Qt4.7.1庫。 arm編譯器的路徑:/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
臂-NONE-Linux的gnueabi-gcov的臂-NONE-Linux的gnueabi-readelf 臂-NONE-Linux的gnueabi-作爲
臂-NONE-Linux的gnueabi運行臂-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 ++
臂-NONE-Linux的gnueabi納米臂-NONE-Linux的gnueabi-GCC
臂-NONE-Linux的gnueabi-objcopy把

目標是調試項目用Qt創建。 所以我簡單地創建了一個Qt快速工程 - > Qt快速應用程序 它創建了一個簡單的Hello World應用程序(C++/Qml) 我交叉編譯它(在調試或發佈中),它在目標上正常工作 。所以我很確定交叉編譯 與我要告訴你的問題無關。

我下載GDB 7.2和執行如下操作:

$出口PATH = /選擇/飛思卡爾在/ usr /本地/ GCC-4.1.2-的glibc-2.5-NPTL-3 /臂無-linux-gnueabi /斌:$ PATH
$ CD /home/elux/iMX35/gdb-7.2/
$的./configure --target =手臂-NONE-Linux的gnueabi --build = i686的
$使
$ sudo make install

$ export CC = arm-none-linux-gnueabi-gcc
$ export LD = arm-none-linux-gnueabi -ld
$ cd gdb/gdbserver/
$ ./configure --build = i386 --host = arm-none-linux-gnueabi --target = arm -none-Linux的 gnueabi
$使

$ sudo的CP gdbserver的/家庭/ elux/MX35/LTIB /根文件系統的/ usr/bin中/(複製gdbserver的目標)

然後在目標:

$ gdbserver 10.10.10。1:4000測試
已創建過程測試; PID = 2194
偵聽端口4000

在目標:

$臂-NONE-Linux的gnueabi-GDB試驗(試驗是交叉編譯它Qt創建者在調試模式) GNU GDB(GDB)7.2
版權所有(C)2010自由軟件基金會,公司
許可證的GPLv3 +:GNU GPL 3版本或更高版本http://gnu.org/licenses/gpl.html
這是自由軟件:您可以自由改變和重新分配。
在法律允許的範圍內,不存在任何擔保。請輸入「show copying」
和「顯示保修」以瞭解詳細信息。
這個GDB被配置爲「--host = i686 --target = arm-none-linux-gnueabi」。
報告程序缺陷,請參閱:
http://www.gnu.org/software/gdb/bugs/ ...
閱讀從/home/elux/iMX35/ltib/rpm/BUILD/qt-everywhere-opensource-src-4.7.1 /平臺/試驗 - 符號打造臂/測試...完成。
(GDB)目標遠程10.10.10.2:4000
使用10.10.10.2:4000
警告遠程調試:無法解析XML對象描述;在編譯時禁用XML支持
警告:無法找到動態鏈接器斷點功能。
GDB將無法調試共享庫初始化程序
並跟蹤顯式加載的動態代碼。
0x400007e0在?? ()
(GDB)

(GDB)設置solib絕對前綴/家庭/ elux/iMX35/LTIB /根文件/從
閱讀符號的/ home/elux/iMX35/LTIB /根文件系統/ lib中/ LD-linux.so.3 ...完成。
加載/home/elux/iMX35/ltib/rootfs/lib/ld-linux.so的符號。3

(GDB)集架構的ARMv5TE
目標結構被假定爲用於ARMv5TE
遠程的 'g' 數據包應答過長:00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000

(GDB)b主要
遠程 'G' 包應答太長:00000000a7ee8ebe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ed8ebe00000000e007004010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

你有任何想法是什麼這個問題是有關?我該如何解決它?

回答

7

我曾嘗試在運行Ubuntu 11.10 64bit的i5機器上調試飛思卡爾ARM,

這個修復程序對我來說是在配置gdb時指定--with-expat標誌。我還不得不安裝libexpat1-dev包。

Explanation here

+0

這是正確的答案。 – BHS 2014-08-04 07:10:10

13

正如我最近就遇到了這個在Ubuntu 12.04(x86_64的),並解決它以不同的方式,我想我會發表評論。這種情況下的踢球者是Ubuntu似乎已經啓用了libexpat的gdb。後來一些修修補補,這解決了這個問題對我來說:

集架構I386:X86-64:英特爾

所以看來這會導致當有結構的不匹配也是如此。

+2

不知道OP,但解決了我的問題。謝謝一堆。 – 2013-07-05 16:09:04

9

我能夠使用gdb-multiarch來解決我的問題。