手把手教你使用VSCode + Gdb + Gdbserver調(diào)試ARM程序
嵌入式軟件開(kāi)發(fā)中,最常用的調(diào)試方法就是:log打印調(diào)試法及在線調(diào)試。
開(kāi)發(fā)STM32時(shí),我們有IDE可以用,IDE中已經(jīng)集成有調(diào)試器,配合仿真器使用起來(lái)很方便。而在Linux應(yīng)用程序的開(kāi)發(fā)中,常常直接在命令行使用gdb進(jìn)行調(diào)試,或者可以使用VSCode+gdb進(jìn)行調(diào)試。
而在嵌入式Linux中,我們?nèi)绾螌?duì)開(kāi)發(fā)板上的arm程序進(jìn)行調(diào)試呢?
我們可以使用VSCode+gdb+gdbserver來(lái)調(diào)試我們arm開(kāi)發(fā)板上的arm程序。下面簡(jiǎn)單介紹一下使用方法,前提是開(kāi)發(fā)板與PC可以進(jìn)行無(wú)線/有線通信。相關(guān)文章:一次關(guān)于WiFi 驅(qū)動(dòng)移植的總結(jié)復(fù)盤(pán)
1、準(zhǔn)備arm格式的gdb及gdbserver工具
一般交叉編譯工具鏈里都包含有,如果沒(méi)有則需要自己下載gdb源碼進(jìn)行交叉編譯,gdb下載源碼下載鏈接:
- http://www.gnu.org/software/gdb/download/
這里我使用的是交叉編譯工具鏈里的gdb及gdbserver,如:
2、創(chuàng)建launch.json文件并修改
我們需要?jiǎng)?chuàng)建vscode的launch.json文件并進(jìn)行一些修改:
其中需要修改"program",這是我們需要調(diào)試的程序,即我們交叉編譯好的程序。還需要添加如下兩個(gè)鍵值對(duì):
- "miDebuggerPath:"/opt/rv1126/bin/arm-linux-gnueabihf-gdb"
- "miDebuggerServerAddress":"192.168.3.12:9001"
其中,miDebuggerPath表示的是arm格式gdb的路徑;miDebuggerServerAddress表示的是我們server端的地址,如:192.168.3.12為開(kāi)發(fā)板的ip,9001為端口號(hào),可自行設(shè)置,其范圍為:0~65536,0~1023 的端口一般由系統(tǒng)分配給特定的服務(wù)程序。
3、把gdbserver傳到開(kāi)發(fā)板上
我們需要交叉編譯器路徑下的gdbserver傳到開(kāi)發(fā)板上,如我這里放到開(kāi)發(fā)板的/usr/bin路徑下:
4、啟動(dòng)gdbserver
我們首先需要啟動(dòng)開(kāi)發(fā)板上的gdbserver,pc端才能連接進(jìn)行調(diào)試,格式為:
- gdbserver 開(kāi)發(fā)板ip:端口號(hào) 要調(diào)試的程序
如:
5、啟動(dòng)vscode的gdb進(jìn)行調(diào)試
最后,啟動(dòng)vscode的gdb即可進(jìn)行調(diào)試。如:
本文轉(zhuǎn)載自微信公眾號(hào)「嵌入式大雜燴」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系嵌入式大雜燴公眾號(hào)。