有沒有辦法在崩潰轉儲中查看每個堆棧幀中的寄存器內容? 當發生異常時,寄存器窗口似乎包含寄存器,但能夠在每個堆棧幀中看到它們的內容會很有用。查看崩潰轉儲中的寄存器
1
A
回答
2
根據調用約定,您可以獲取一些保存在堆棧上的寄存器。例如,在cdecl calling convention中,除了EAX,ECX和EDX之外的所有寄存器都需要由主叫方或被叫方保存。這三個寄存器是可破解的,所以你通常無法從調用堆棧中的較高位置獲取它們的值。如果函數沒有使用必須保存的寄存器,那麼它不會保存它,但由於它不使用它,該寄存器在下一個更高的堆棧幀中具有相同的值。
1
在做了一些研究並思考了一下之後,我意識到這可能是不可能的。崩潰minidump保存進程內存的某些區域(取決於傳遞給MiniDumpWriteDump()函數的標誌)以及足夠的狀態信息來重新創建崩潰發生在調試器中的環境。它在每個指令處甚至每個堆棧幀都沒有處理器狀態,只知道發生異常時的處理器狀態。
-1
我不認爲你可以在調試時得到它。您可以從寄存器獲得的唯一值是當前指令的值。
0
在經過優化的版本中,向下堆疊的某些信息可能會被扔掉,但是,您可以要求調試器嘗試向您顯示給定堆棧幀的信息。首先執行「kn
」以查看具有幀編號的堆棧,然後嘗試「.frame /c [frame]
」或「.frame /r [frame]
」。
查看幫助(「.hh
」)瞭解更多信息。
相關問題
- 1. 在內核崩潰轉儲期間分析CPU寄存器
- 2. APV PDF查看器崩潰
- 3. 轉儲GCC中寄存器的值
- 4. PPC中的轉儲寄存器
- 5. 轉儲崩潰轉儲
- 6. Android崩潰轉儲
- 7. 查找基於崩潰轉儲的崩潰位置
- 8. 如何查看寄存器上的值?
- 9. 崩潰的ListView.removeFooterView(查看)
- 10. c#崩潰轉儲不存在
- 11. 從寄存器轉儲中查找故障代碼
- 12. Segue查看控制器崩潰
- 13. Windows服務器崩潰轉儲分析
- 14. 從CPU轉儲CPU寄存器
- 15. 回收站中的setOnClickListener查看崩潰
- 16. Windbg崩潰轉儲分析
- 17. 崩潰生成轉儲
- 18. XMM寄存器存儲
- 19. 崩潰轉儲中的模塊版本
- 20. 檢查Erlang崩潰轉儲 - 如何計算所有內存?
- 21. ARM鎖定寄存器寫操作使設備崩潰
- 22. 如何從ARM寄存器信息時,系統崩潰
- 23. 在windbg中分析崩潰轉儲
- 24. 從核心轉儲崩潰中恢復
- 25. 從崩潰轉儲中提取變量
- 26. 我在哪裏可以找到Windows崩潰轉儲(藍屏崩潰轉儲)?
- 27. 如何將數據存儲在存儲器或寄存器中
- 28. 崩潰報告中的CPU寄存器地址如何在分析中有用?
- 29. Couchdb查看查詢崩潰/超時
- 30. 崩潰轉儲意味着在順序指令之間更改了寄存器值