如何找出軟件掛起的原因?(qemu + zephyr + tfm 的問題) (How to find out the cause of hanging software? (problem with qemu + zephyr + tfm))


問題描述

如何找出軟件掛起的原因?(qemu + zephyr + tfm 的問題) (How to find out the cause of hanging software? (problem with qemu + zephyr + tfm))

我正在 qemu 上執行一個 arm elf (zephyr os + tfm) 並讓它運行一些測試。不幸的是,它在某個點停止,沒有錯誤消息或警告。我也嘗試過使用 GDB,但在某個時候,它就停止了。對於同一版本,它總是在同一點停止(如果我添加一些調試打印,它會提前或稍後停止)。我認為有一些掛起的中斷根本沒有被捕獲......老實說不知道。

因此,我的問題:如何找出掛起軟件的原因?或者,我怎樣才能檢查哪個中斷已經上升以停止正常執行?


參考解法

方法 1:

For future reference TF‑M has an option to enable an exception info dump print in case of faults. I would start enabling that by setting the following define in the cmake config step: ‑DTFM_EXCEPTION_INFO_DUMP=True

(by Antonio Ken Iannilload3angel1s)

參考文件

  1. How to find out the cause of hanging software? (problem with qemu + zephyr + tfm) (CC BY‑SA 2.5/3.0/4.0)

#interrupt #arm #gdb #reverse-engineering #debugging






相關問題

無法在 java 命令行程序中捕獲中斷 (Unable to catch interrupt in java command line program)

不連續的 BitBlt 捕獲 (discontinuous BitBlt capture)

GPIO 更改狀態時如何更新 sysfs? (How is sysfs updated when a GPIO changes state?)

Linux IRQ 處理程序中的固有競爭條件 (Inherent race condition in Linux IRQ handlers)

STM32 外部中斷僅在調試模式下響應 (STM32 external interrupt responds only in debug mode)

Java中的線程 (Threading in Java)

如何在被 Python 殺死之前運行最後一個函數? (How to run one last function before getting killed in Python?)

在 C++ 中處理中斷 (Handling Interrupt in C++)

應用程序中斷瘋狂 (Application interrupts like crazy)

SetPriorityClass(REALTIME_PRIORITY_CLASS) 實際上做了什麼? (What does SetPriorityClass(REALTIME_PRIORITY_CLASS) actually do?)

如何找出軟件掛起的原因?(qemu + zephyr + tfm 的問題) (How to find out the cause of hanging software? (problem with qemu + zephyr + tfm))

將參數傳遞給系統調用 (Passing arguments to system calls)







留言討論