人妻蜜と1~4中文字幕月野定规 ,国产精品成人va在线播放,色优久久久久综合网鬼色,WWW插插插无码视频网站

【ARM】Keil MDK在調(diào)試模式下查看當(dāng)前在堆棧上的函數(shù)、變量

1、 文檔目標(biāo)

本文旨在為使用Keil MDK(Microcontroller Development Kit)進(jìn)行嵌入式開(kāi)發(fā)的工程師提供一種詳細(xì)的指導(dǎo)方法,幫助其在調(diào)試過(guò)程中確認(rèn)當(dāng)前程序運(yùn)行狀態(tài)下的函數(shù)調(diào)用鏈和局部變量信息。特別是在實(shí)時(shí)操作系統(tǒng)(RTOS)環(huán)境下,開(kāi)發(fā)者需要明確當(dāng)前任務(wù)的執(zhí)行上下文以及堆棧中的變量分布情況,以快速定位問(wèn)題并優(yōu)化代碼。

通過(guò)本文所述的方法,開(kāi)發(fā)者可以更高效地利用MDK調(diào)試工具的功能,提升調(diào)試效率,減少因堆棧溢出或函數(shù)調(diào)用異常導(dǎo)致的系統(tǒng)崩潰風(fēng)險(xiǎn)。


2、 問(wèn)題場(chǎng)景

在嵌入式開(kāi)發(fā)中,復(fù)雜的應(yīng)用程序通常包含多個(gè)函數(shù)調(diào)用層級(jí),尤其是在引入實(shí)時(shí)操作系統(tǒng)(如RTX RTOS)后,任務(wù)切換和多線(xiàn)程機(jī)制使得程序執(zhí)行流程更加復(fù)雜。傳統(tǒng)的單步調(diào)試方式雖然能夠逐步跟蹤代碼執(zhí)行,但難以直觀地展示當(dāng)前任務(wù)的函數(shù)調(diào)用關(guān)系以及局部變量的狀態(tài)。

例如,當(dāng)程序運(yùn)行到某一點(diǎn)時(shí),開(kāi)發(fā)者可能需要確認(rèn)以下信息:

● 當(dāng)前任務(wù)的函數(shù)調(diào)用鏈?zhǔn)鞘裁矗?/span>

● 哪些局部變量已被加載到堆棧中?

● 局部變量的值是否符合預(yù)期?

這些問(wèn)題在調(diào)試過(guò)程中尤為關(guān)鍵,因?yàn)樗鼈冎苯雨P(guān)系到程序的正確性和性能優(yōu)化。然而,手動(dòng)分析堆棧信息不僅耗時(shí),還容易出錯(cuò)。因此,如何利用Keil MDK提供的工具快速獲取這些信息成為亟待解決的問(wèn)題。


3、軟硬件環(huán)境

1)、軟件版本:Keil MDK 5.38a

2)、電腦環(huán)境:Windows 11

3)、外設(shè)硬件:無(wú)


4、解決方法

1)、在MDK Debug模式下,有一個(gè)Call Stack + Locals窗口,該窗口就是用于顯示當(dāng)前位于堆棧上的對(duì)象。對(duì)于使用RTX-RTOS的應(yīng)用程序,會(huì)顯示任務(wù)。每個(gè)對(duì)象都與其位置或值以及類(lèi)型相關(guān)聯(lián)。當(dāng)前函數(shù)位于列表頂部,被調(diào)用函數(shù)位于其下方,并且還會(huì)顯示當(dāng)前函數(shù)的所有局部變量的信息。(如圖4-1)

圖4-1

2)、Call Stack + Locals窗口可以通過(guò)菜單欄View->Call Stack WIndows打開(kāi)(如圖4-2-1)或者直接在工具欄中點(diǎn)擊Call Stack Windows的按鈕打開(kāi)(如圖4-2-2)。

圖4-2-1

圖4-2-2


3)、在程序運(yùn)行過(guò)程中Call Stack + Locals窗口是不會(huì)進(jìn)行更新的,只有觸發(fā)斷點(diǎn)或者程序暫停運(yùn)行后,才會(huì)顯示出當(dāng)前情況下處于堆棧中的函數(shù)與對(duì)象。(如圖4-3)

圖4-3


4)、在Call Stack + Locals窗口中一共包含以下的三欄數(shù)據(jù)(如圖4-4):

(1)、Name:顯示符號(hào)名稱(chēng)。當(dāng)前活動(dòng)的功能或任務(wù)以綠色突出顯示。

(2)、Location/Value:顯示該項(xiàng)的內(nèi)存地址或值,或具有解釋性文本。對(duì)于unsigned char類(lèi)型的項(xiàng),該字段顯示值和字符。

(3)、Type:顯示對(duì)象類(lèi)型。函數(shù)與其返回類(lèi)型和參數(shù)類(lèi)型相關(guān)聯(lián)。

圖4-4


5)、還在通過(guò)右鍵選中對(duì)應(yīng)的函數(shù)或者變量,跳轉(zhuǎn)到對(duì)應(yīng)函數(shù)的位置或者被調(diào)用的位置。(如圖4-5)

圖4-5