2017-01-19 79 views
0

我正在調試eclipse CodeSourcery IDE中的C項目。該項目在linux-arm設備上運行,因此我使用gdbserver進行交叉編譯和調試。我的項目由一個主程序和一些共享庫組成,我使用-g3標籤進行編譯(也嘗試了-g)。一切都建立正確:鏈接器找到了所有的依賴,我編譯後的文件複製到遠程機器和我運行Eclipse:gdbserver找不到源文件

$gdbserver :2159 Test & 

,我可以開始配置IDE的調試後,遠程調試。 我正確調試,直到我進入'庫函數。我沒有得到任何錯誤提示獲取,但我不能在函數內部調試輸出消息

[New Thread 1032] 

,但功能正確執行,我可以繼續我的主程序。後來,在另一個圖書館裏,我得到了分段錯誤。

我想我的本地機器上的gdbserver搜索源,因爲我可以調試我的主程序。爲什麼我不能調試我的庫的源代碼?

感謝

+0

所以所有的庫都用'-O0'和'-g3'編譯? –

+0

是的,這是正確的 – Joster

回答

0

How to runtime debug shared libraries?

望着這個問題,你可以看到GDB可以將破發點庫的內部功能只需使用一個函數名。

(gdb) b func 
Function "func" not defined. 
Make breakpoint pending on future shared library load? (y or [n]) y 
Breakpoint 1 (func) pending. 
+0

不完全是我的問題。當gdbserver沒有找到庫的源文件時,我該怎麼做? – Joster