我使用的是定製的工具鏈(基於Yocto用gcc 4.7和gdb 7.5)與ARM設備的工作,並利用遠程GDB的使用Eclipse CDT作爲調試器前端進行調試。最近,我有,我不能調試遠程目標上特定的可執行文件,由於當主機GDB連接到目標之後緊接着發生這個錯誤(通過對目標的gdbserver的報道)問題:
error while loading shared libraries: unexpected PLT reloc type 0xf0
我最終可以追蹤到目標和主機上的動態鏈接程序庫/lib/ld-2.16.so
的二進制文件不匹配問題,其中通過在gdb中調用set sysroot
,我使用了本地存儲的與工具鏈一起生成的目標根目錄。
保持本地文件與遠程文件同步工作,但我也可以忽略設置sysroot
以便至少調試可執行文件本身。這使我下面
問題
如何做一個錯誤ld.so
二進制的調試主機影響目標gdbserver的內部應用程序的執行的使用情況如何?如果主機上沒有ld.so
,我寧願期望在主機上運行的可執行文件沒有問題(在gdbserver中)時,我只能得到錯誤的主機調試信息。但是,由於行爲不同,當文件可用時,似乎從主機到目標有一些反饋。
到現在爲止,我從來沒有質疑過斷點是如何工作的,但是你的回答讓我趕上了這個話題。我認爲你的解釋很有道理,這是我學到的另一個寶貴的教訓,謝謝! – 2014-10-22 07:47:54