1. 程式人生 > >lst 檔案的建立與除錯價值

lst 檔案的建立與除錯價值

lst檔案的建立與除錯價值

在使用 eclipse 進行嵌入式開發時,有時會遇到程式跳入異常服務程式的情況。這種情況一旦出現,往往讓人有點無處著力的感覺。可如果你瞭解 lst 檔案,那麼在這種情況下它往往能起到關鍵的作用。

lst 檔案實際是使用 objdump 反彙編 elf 檔案得到的輸出檔案,它擁有比 map 檔案更詳細的資訊。如果你的程式中加入了除錯資訊,那麼你可以在 lst 中看到每一條指令的地址。藉助 lst 檔案,同時通過檢視棧幀結構(可以通過檢視相應的手冊來確定棧幀的組成),通過在 lst 檔案中查詢 lr 的地址所在的位置,你就能立刻定位到問題。

你可以在 eclipse

的工程配置中的 Toolchains 子選單中選擇 Create extended listing 選項,應用設定後切換到 Tool Settings 子選單,你會發現下方多了一個 GNU ARM Cross Create Listing 選項,你可以在這個選項中指定更詳細的資訊。

下面是一個典型的命令列輸出:

Invoking: GNU ARM Cross Create Listing
arm-none-eabi-objdump --source --all-headers --demangle --file-headers --line-numbers --wide "hello world.elf" > "hello world.lst"
Finished building: hello world.lst

上述命令列使用 objdump 反彙編 elf 檔案,然後將結果重定向為 lst 檔案。你也可以直接使用命令列生成 lst 檔案。