我正在为一些自定义要求构建一个.Net Profiler,我需要捕获异常细节,即使它在代码中得到了正确处理。 为此 -
到目前为止,我正在为每个被抛出的异常进行回调。但是,它给出了OjbectID,它是指向实际异常对象的指针。我想要有关异常的更多详细信息,如消息,调用堆栈等。
如何从ObjectID获取对象详细信息?
答案 0 :(得分:1)
正如@HansPassant所提到的,你所做的事情就像调试器一样,而不是分析器。但是,如果这是一个很难的要求,你可以使用分析器做你想做的事情 - 我相信IL可以通过settings.py
接口重写,但我是一个分析器开发者,并没有使用调试器接口作为得多。
David Broman's blog对使用ICorDebug
接口进行托管堆栈遍历有很好的描述。为了获得原生部分,你需要做更多的工作。
也可以通过ICorProfilerInfo2
界面导航对象实例。
使用ICorProfilerInfo2
使用班级ID通过ICorProfilerInfo::GetClassFromObject()
索引对象以获取所需数据。