本應用筆記描述了在 Windows 平臺使用 VS Code 調試 RT-Thread qemu-vexpress-a9 BSP 工程。
本文的目的和結構
本文的目的和背景
VS Code(全稱 Visual Studio Code)是一個輕量且強大的代碼編輯器,支持 Windows,OS X 和 Linux。內置 JavaScript、TypeScript 和 Node.js 支持,而且擁有豐富的插件生態(tài)系統(tǒng),可通過安裝插件來支持 C++、C#、Python、PHP 等其他語言。
本文主要介紹在 Windows 平臺使用 VS Code 調試 qemu-vexpress-a9 BSP 工程。
本文的結構
本文主要介紹 VS Code 調試準備工作以及如何調試工程。
準備工作
下載 RT-Thread 源碼,推薦下載3.1.0及以上版本。
下載 RT-Thread Env 工具,推薦下載1.0.0及以上版本。
https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-tool-manual/env/env-user-manual/
下載 VS Code
https://code.visualstudio.com/Download
以上網址請復制至瀏覽器打開
運行和調試 RT-Thread
步驟一 安裝調試插件
在 VS Code Extensions 里下載并安裝支持 C/C++ 的調試插件:
安裝好后確認插件為以下狀態(tài),如果不是則點擊重新加載:
步驟二 打開 VS Code 項目工程
在 Env 控制臺進入 qemu-vexpress-a9 BSP 根目錄,然后輸入命令code .打開 VS Code。
VS Code 打開后會自動打開 qemu-vexpress-a9 BSP 文件夾,如下圖所示。
步驟三 編譯 RT-Thread
點擊 VS Code “查看 -> 終端” 打開 VS Code 內部終端,在終端里輸入命令scons即可編譯工程,終端會打印出編譯信息。
編譯完成后輸入.qemu.bat命令就可以運行工程。終端會輸出 RT-Thread 啟動 logo 信息,QEMU 也運行了起來。
注意事項:
1、調試 BSP 工程前需要先編譯工程生成 rtthread.elf 文件。
2、可以使用scons --target=vsc -s命令更新 VS Code 需要用到的 C/C++ 頭文件搜索路徑信息。不是每次都需要更新,只有在使用了 menuconfig 重新配置了 RT-Thread 或更改了 rtconfig.h 頭文件時才需要。
步驟四 修改 qemu-dbg.bat 文件
開始調試前需要編輯qemu-vexpress-a9目錄下的qemu-dbg.bat文件,在 qemu-system-arm 前加入 start :
@echo offif exist sd.bin goto run qemu-img create -f raw sd.bin 64M :run start qemu-system-arm -M vexpress-a9 -kernel rtthread.elf -serial stdio -sd sd.bin -S -s
步驟五 調試工程
如下圖所示,在 VS Code 里點擊調試菜單(小蟲子圖標),調試平臺選擇 Windows,然后按 F5 就可以開啟 QEMU 調試模式,斷點停留在 main 函數(shù)。VS Code 調試選項如下圖所示:
QEMU 也運行了起來,如下圖所示。
在 VS Code 里可以使用 GDB 命令,需要在最前面加上-exec。 例如-exec info registers命令可以查看寄存器的內容:
其他一些主要命令介紹如下所示:
查看內存地址內容:x/ ,各個參數(shù)說明如下所示:
n 是一個正整數(shù),表示需要顯示的內存單元的個數(shù),也就是說從當前地址向后顯示幾個內存單元的內容,一個內存單元的大小由后面的 u 定義
f 表示顯示的格式,參見下面。如果地址所指的是字符串,那么格式可以是 s。其他格式如下表所示:
u 表示從當前地址往后請求的字節(jié)數(shù),如果不指定的話,GDB 默認是 4 個 bytes。u 參數(shù)可以用下面的字符來代替,b 表示單字節(jié),h 表示雙字節(jié),w 表示四字 節(jié),g 表示八字節(jié)。當我們指定了字節(jié)長度后,GDB 會從指內存定的內存地址開始,讀寫指定字節(jié),并把其當作一個值取出來。
addr 表示一個內存地址。
注意事項:嚴格區(qū)分 n 和 u 的關系,n 表示單元個數(shù),u 表示每個單元的大小。
示例:x/3uh 0x54320表示從內存地址 0x54320 讀取內容,h 表示以雙字節(jié)為一個單位,3 表示輸出三個單位,u 表示按十六進制顯示。
查看當前程序棧的內容: x/10x $sp--> 打印 stack 的前 10 個元素查看當前程序棧的信息: info frame----list general info about the frame查看當前程序棧的參數(shù): info args---lists arguments to the function查看當前程序棧的局部變量: info locals---list variables stored in the frame查看當前寄存器的值:info registers(不包括浮點寄存器) info all-registers(包括浮點寄存器)查看當前棧幀中的異常處理器:info catch(exception handlers)
Tips:輸入命令時可以只輸入每個命令的第一個字母。例如:info registers可以只輸入i r。
注意事項
如果在 VS Code 目錄中額外添加了文件夾,會導致調試不能夠啟動。
每次開始調試都需要使用 Env 工具在 BSP 根目錄使用code .命令打開 VS Code 才能正常調試工程。
參考
Env 工具使用手冊
常見問題
Env 工具的相關問題請參考 Env 工具使用手冊的常用資料鏈接小節(jié)。
提示找不到 ‘qemu-system-arm’。
解決方法:直接打開 VS Code 調試工程會有這個錯誤,請使用 Env 工具在 BSP 根目錄使用code .命令打開 VS Code 。
VS Code 調試選項沒有出現(xiàn) Debug@windows選項。
解決方法:請更新RT-Thread源代碼到3.1.0及以上版本。
-
WINDOWS
+關注
關注
4文章
3580瀏覽量
89381 -
編輯器
+關注
關注
1文章
806瀏覽量
31305 -
生態(tài)系統(tǒng)
+關注
關注
0文章
704瀏覽量
20792
原文標題:【RTOS專欄】使用 VS Code + QEMU 調試 RT-Thread
文章出處:【微信號:elecfans,微信公眾號:電子發(fā)燒友網】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
如何在windows和linux平臺使用RT-Thread QEMU BSP,并運行RT-ThreadGUI示例
![如何在windows和linux平臺使用<b class='flag-5'>RT-Thread</b> <b class='flag-5'>QEMU</b> <b class='flag-5'>BSP</b>,并運行<b class='flag-5'>RT</b>-ThreadGUI示例](https://file.elecfans.com/web1/M00/45/E4/o4YBAFp7oDmAJmgMAAAVSNIpyFs909.png)
評論