在板子中調試
上面的方法是直接在 ubuntu 調試源代碼,只能查看源代碼的錯誤,如果你想要你的應用程序在板子中運行,想打出它在板子上運行的 bug,就要采用下面的方法。
一般的桌面 Linux 系統,比如 ubuntu、centos 等,我們可以直接運行 gdb 來調試程序。但是嵌入式中芯片性能一般比較弱,所以直接在嵌入式系統中運行 gdb 不太現實(性能強大的嵌入式芯片可以這么做)。嵌入式系統中一般在 PC 端運行 gdb 工具,源碼也是在 PC 端,源碼對應的可執行文件放到開發板中運行。為此我們需要在開發板中運行 gdbserver,通過網絡與 PC 端的 gdb 進行通信。因此要想在 PC 上通過 gdb 調試嵌入式程序,那么需要兩個東西:gdb 和 gdbserver,其中 gdb 是運行在 PC 上的,gdbserver 需要我們移植到開發板上。
實操如下:
博主在 ubuntu 中為 imx6ull 開發板安裝過交叉編譯工具鏈,該工具鏈自帶了 gdb 調試工具。包含了 arm-linux-gnueabihf-gdb 和 gdbserver。
將 gdbserver 拷貝到開發板 /bin 目錄下。將上文編譯出來的 gdbtest 文件拷貝到板子中。
確保 ubuntu和開發板可以進行網絡通信。在開發板中輸入如下命令:
gdbserver 192.168.31.121:2001 gdbtest //啟動開發板上的 gdbserver
192.168.31.121 為 ubuntu 的 IP 地址,2001 是端口號, 可以任意給一個端口號,gdbtest 是要調試的可執行文件。輸入以后開發板輸出信息如圖所示:
接著在 ubuntu 中輸入如下命令啟動 gdb 調試工具:
arm-linux-gnueabihf-gdb gdbtest
如果該命令不能運行,請將你交叉編譯工具鏈的目錄配置到 /etc/profile 文件最后,并且在命令行輸入 source /etc/profile,其實就是讓你的環境變量生效。
結果如圖所示:
圖中最下面的(gdb)行用于輸入命令,輸入如下命令連接到開發板上:
target remote 192.168.31.207:2001 //連接到開發板上
上述命令表示連接到開發板上,其中 192.168.31.207 就是開發板 IP 地址,2001 就是開發板 gdbserver 設置的端口號。連接成功以后開發板中的 gdbserver 就會提示連接信息,
連接成功以后就可以 在 ubuntu 上進行代碼調試了,調試的文件是在板子上運行的 ,可以復現你想要的信息,比如可以打出你的應用程序在板子上的 bug。
-
嵌入式
+關注
關注
5092文章
19177瀏覽量
307663 -
開發板
+關注
關注
25文章
5121瀏覽量
98194 -
gdb
+關注
關注
0文章
60瀏覽量
13346
發布評論請先 登錄
相關推薦
評論