天天看點

ARM Cortex-M底層技術(十四)KEIL MDK 調試技術-1 【調試技術簡介】

ARM Cortex-M底層技術(十四)KEIL MDK 調試技術-1 【調試技術簡介】

    最近懶癌上身,N久都沒有寫東西了,我對不起祖國,對不起黨,剛好趕在十一,祖國都69(注意是歲數不是姿勢……)了,我實在不好意思再偷懶了,行了,不瞎BB了,進入正題,承接之前~,其實關于分散加載還有一些東西木有說清楚,煮藥是分散加載的點太碎,也木有在事先建構好一個體系,是以呢可能說的有點亂,以後我再想想把分散加載的一些東西做一個“拾遺”吧(其實是人懶,不想寫了~~~~~,寫兩篇爽了就撤了……,以後哪天責任感上頭的時候再補吧)。

先看一個總視圖

ARM Cortex-M底層技術(十四)KEIL MDK 調試技術-1 【調試技術簡介】

    相信大家都是有基礎滴,最基本的東西我就不廢話了,很多初級選手做ARM Cortex-M調試基本都停留再使用上圖5界面裡面打斷點看變量的老套路裡面,當然這是最通用的調試技術,但對于我們這些有追求的小夥兒們這樣的粗陋手段顯然是不夠高效的,接下來的幾篇文章我們将以Keil為藍本,深入調試技術的内部,掌握更深層次的調試技術,本篇先進行簡單介紹。

調試視圖(簡的不能再簡)簡介

 (1)Logic Analyzer視窗,虛拟邏輯分析儀,跟真實的邏輯分析儀功能一樣,可以看到變量或外設的值的變化趨勢。

ARM Cortex-M底層技術(十四)KEIL MDK 調試技術-1 【調試技術簡介】

 (2)System Analyzer視窗,可以看到系統能耗;

ARM Cortex-M底層技術(十四)KEIL MDK 調試技術-1 【調試技術簡介】

(3)Performance Analyzer視窗,分析工程内,每個函數執行所占用的時間以及CPU占用率

ARM Cortex-M底層技術(十四)KEIL MDK 調試技術-1 【調試技術簡介】

(4) 作業系統相關的事件記錄等功能,關聯作業系統,需要專門插件才能執行,後文再介紹(看緣分了~)

  1. 核心寄存器試圖,你所用的MCU的核心最核心的寄存器的資訊都在這裡,這個是最重要的調試資訊,但很多人其實調試的時候根本不看這些核心寄存器。舉例來說,這些寄存器組可以提供的幾個常用功能:一是,當晶片發生硬體錯誤的時候也就是進入HardFault-Handler()函數的時候(如果你都沒有注意過這個,真得好好補補課了),通過這些寄存器組可以迅速定位到出錯的程式的位置,精确到具體哪一行,無須你在界面5裡面打斷點自己慢慢找;二是,可以直覺的看到函數的入口參數,程式跑飛的時候60%以上的問題是由指針的錯誤使用造成的,而函數入口沒把好關就是一個重要的錯誤來源,你可以通過這些通用寄存器友善的看到函數入口參數,如果其中有空指針/野指針可以馬上發現;三是,堆棧溢出,這類錯誤往往比較隐蔽,表象是程式經常不在同一個函數體裡面跑飛或者崩潰,有時甚至看起來無規律的,但這類錯誤可以通過核心寄存器組快速發現;四是,一些數學運算的錯誤,比如除0錯誤,進位/借位錯誤,溢出錯誤等,直接可以發現;當然其他還有很多,這裡不一一介紹了。
  2. 這裡因為沒有辦法把Keil所有的功能都截圖下來,隻截圖了一個反彙編視窗,其實這類功能性視窗還有n多,反彙編想必大家都知道是啥了,不多廢話了;下面看一下其他幾個常用的:
  3. 指令視窗,Keil支援很多的調試指令,作為斷點調試的強有力補充手段,比如用于顯示特定Memory的Display指令/用于顯示當先Symbol的dir指令/用于調用邏輯分析儀的LA指令/用于下一些特殊斷點的BreakSet指令等,大概30-40個左右,這些指令的功能實際上非常強大,之後的部落格裡面我們會慢慢說到。
  4. Call Stack and locals視窗:顯示目前堆棧裡面的元素,實際也是很有用的一個視窗,可以看到目前堆棧内部情況尤其可以看出函數的調用關系,這點用處不小,後面博文慢慢細說;
  5. 其他視窗,實在不知道該咋簡介了,如Memory視窗/Symbols視窗等,也都是非常常用的輔助調試視窗,後面博文都會慢慢講到,不過這兩個視窗的功能比較常用,估計大多數人都用過,就不簡介了~;
ARM Cortex-M底層技術(十四)KEIL MDK 調試技術-1 【調試技術簡介】
ARM Cortex-M底層技術(十四)KEIL MDK 調試技術-1 【調試技術簡介】

其他亂七八糟調試技術的碎碎念:

SHELL:其實Shell是一種很高效的輔助調試方式,Linux常用的調試技巧,隻是再嵌入式MCU裡面不是很常用,小編我在很久很久以前寫過一個簡單的Shell,運作效果如下(當然建議大家找個更靠譜的Shell或者自己寫一個),還蠻好用的(寫的時候充分考慮了可移植性),在不友善連接配接調試器的時候或者産品定性後,修改參數或者快速定位故障很有用。後文再慢慢唠吧……

ARM Cortex-M底層技術(十四)KEIL MDK 調試技術-1 【調試技術簡介】

軟仿真:其實軟仿真單獨自己的功能不是很實用,但是Keil為軟仿真提供了仿真函數、信号函數、虛拟序列槽等機制來輔助進行功能仿真,有時比外部硬體還要好用。

JLINK附屬輔助調試軟體:JLINK有很多附屬的輔助調試軟體,很好用,如下圖,後面的博文也會有專門介紹。

ARM Cortex-M底層技術(十四)KEIL MDK 調試技術-1 【調試技術簡介】

哎,一口氣給自己挖了這麼多坑,以後有的寫了~…………………………,具體見以後博文吧~