有没有办法在崩溃转储中查看每个堆栈帧中的寄存器内容? 当发生异常时,寄存器窗口似乎包含寄存器,但能够在每个堆栈帧中看到它们的内容会很有用。查看崩溃转储中的寄存器
1
A
回答
2
根据调用约定,您可以获取一些保存在堆栈上的寄存器。例如,在cdecl calling convention中,除了EAX,ECX和EDX之外的所有寄存器都需要由主叫方或被叫方保存。这三个寄存器是可破解的,所以你通常无法从调用堆栈中的较高位置获取它们的值。如果函数没有使用必须保存的寄存器,那么它不会保存它,但由于它不使用它,该寄存器在下一个更高的堆栈帧中具有相同的值。
1
在做了一些研究并思考了一下之后,我意识到这可能是不可能的。崩溃minidump保存进程内存的某些区域(取决于传递给MiniDumpWriteDump()函数的标志)以及足够的状态信息来重新创建崩溃发生在调试器中的环境。它在每个指令处甚至每个堆栈帧都没有处理器状态,只知道发生异常时的处理器状态。
-1
我不认为你可以在调试时得到它。您可以从寄存器获得的唯一值是当前指令的值。
0
在经过优化的版本中,向下堆叠的某些信息可能会被扔掉,但是,您可以要求调试器尝试向您显示给定堆栈帧的信息。首先执行“kn
”以查看具有帧编号的堆栈,然后尝试“.frame /c [frame]
”或“.frame /r [frame]
”。
查看帮助(“.hh
”)了解更多信息。
相关问题
- 1. APV PDF查看器崩溃
- 2. 转储GCC中寄存器的值
- 3. PPC中的转储寄存器
- 4. Android崩溃转储
- 5. 如何查看寄存器上的值?
- 6. c#崩溃转储不存在
- 7. 从寄存器转储中查找故障代码
- 8. Windows服务器崩溃转储分析
- 9. 回收站中的setOnClickListener查看崩溃
- 10. 崩溃生成转储
- 11. Windbg崩溃转储分析
- 12. XMM寄存器存储
- 13. 崩溃转储中的模块版本
- 14. ARM锁定寄存器写操作使设备崩溃
- 15. 在windbg中分析崩溃转储
- 16. 我在哪里可以找到Windows崩溃转储(蓝屏崩溃转储)?
- 17. 崩溃报告中的CPU寄存器地址如何在分析中有用?
- 18. 伪造查看器崩溃与材料中的非ASCII字符
- 19. Internet Explorer 8在哪里存储其崩溃转储?
- 20. 查看在MySQL崩溃的DB
- 21. Windbg崩溃转储中的性能计数器
- 22. 如何转储gdb中的所有XMM寄存器?
- 23. 错误异常会导致在[NSInvocation invoke]中导致崩溃的寄存器
- 24. 崩溃转储的最佳标志
- 25. 帮助下面的崩溃转储
- 26. chkimg错误的意义崩溃转储
- 27. POSIX上的C++崩溃转储
- 28. 一个进程在Windows崩溃..崩溃转储位置
- 29. 崩溃的git存储库的历史
- 30. 如何在linux中检查崩溃转储