2016-06-28 212 views
2

我交叉編譯Qt並創建了SD卡映像,並使用losetup裝載。與直接sshfs掛載相比,現在編譯速度更快。應用程序運行OK。現在,我想調試哪個死了很慢,看起來好像它正在將文件複製回開發機器進行調試。我看到這個建議:非常緩慢的調試

File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.

我使用gdb-multiarch並得到了gdbserver(目標板)。

我有點迷失在這裏。在哪裏設置這個選項?我向二進制提供了--sysroot參數,但沒有用。任何幫助真的很感激。

更新:使用Qt Creator進行開發。

回答

2

sysroot是一個gdb設置。您可以使用set sysroot命令在gdb中進行設置。例如:

(gdb) help set sysroot 
Set an alternate system root. 
The system root is used to load absolute shared library symbol files. 
For other (relative) files, you can add directories using 
`set solib-search-path'. 

這GDB如何試圖找到它所需要的各種文件設置的控制,特別是可執行文件和共享庫正在調試。

gdb的最新版本默認sysroottarget:,這意味着「從目標中獲取文件」。如果你在本地調試,這只是本地文件系統訪問;但如果您正在遠程調試並且連接速度較慢,這可能會有點痛苦。爲了使這個速度,這個想法是讓你需要的所有文件的本地副本,然後用set sysroot在這個本地副本指向GDB。

這種方法的主要問題是,如果您的本地副本是不同步的遙控器,你可以結束了混亂的GDB並獲得廢話結果。我不確定,但也許可以啓用構建ids有點緩解這個問題(當然理論上gdb可以檢測到構建id不匹配和警告,我只是不記得它實際上是否)。

+0

我正在使用Qt Creator。謝謝 – ramtheconqueror

+0

@ramtheconqueror所以? Qt Creator是一個IDE,而不是調試器。它使用gdb來調試目標上的代碼。您可以從Qt Creator的調試器日誌/命令窗格中發出調試器命令。通過轉到以下菜單項來顯示它:'Window-> Views-> Debugger Log'。在那裏你可以改變sysroot設置。 –