小编Sas*_*ein的帖子

从minidump中存储的异常上下文中检索堆栈跟踪(类似于.ecxr; k)

从Windows错误报告中获取的转储通常在错误线程上设置无用的当前上下文,并且堆栈深入WerpReportFault.可以使用以下方式检索异常时的实际上下文.ecxr- 它还以相同线程(例如k)上的后续命令返回"正确"信息的方式设置上下文.

我正在构建一个自动转储分析工具,用于IDebugControl::GetStackTrace获取错误线程的堆栈.我可以使用检索存储的异常上下文IDebugControl4::GetStoredEventInformation.如果我使用存储的上下文中的EBP/RBP,ESP/RSP,EIP/RIP值GetStackTrace,我得到正确的堆栈.但是,我宁愿复制.ecxr命令所做的事情,设置"正确"状态直到线程切换.我尝试使用IDebugAdvanced::SetThreadContext,但它似乎是转储目标的非法操作,并失败与0x8000FFFF.

我试图弄清楚.ecxr通过调试WinDbg实例做了什么,它看起来像是.ecxr在实现dbgeng!DotEcxr.但是,通过跟踪它(with wt),我无法理解它如何重置当前线程的上下文.它似乎没有调用任何COM调试客户端接口方法,并且不使用IDebugAdvanced::SetThreadContext.

关于如何在转储文件中设置线程上下文的任何建议都将非常感激.作为最后的手段,我总是可以使用IDebugControl::Execute并简单地调用.ecxr命令,但我更喜欢更程序化的方法.

debugging windbg dump windows-error-reporting

5
推荐指数
1
解决办法
925
查看次数

在C++中运行时加载函数

我有以下问题:

我的程序应该在运行时决定加载一个函数(在本例中是GetExtendedTcpTable()),因为该方法在Windows 2000中不可用!(无法仅在Windows 2000中启动软件)

谢谢您的帮助!

招呼leon22

c++ loadlibrary dynamic-binding

1
推荐指数
1
解决办法
869
查看次数