C++ 如何使用dbghelp实现混合模式(托管和本地)堆栈!StackWalk64?

C++ 如何使用dbghelp实现混合模式(托管和本地)堆栈!StackWalk64?,c++,64-bit,stack-trace,dbghelp,C++,64 Bit,Stack Trace,Dbghelp,我正在尝试使用StackWalk64在x64进程上遍历包含托管帧和本机帧的调用堆栈。在第一个或第二个受管帧出现之前,一切正常,之后StackWalk64无法确定帧的返回地址,因此失败 我正在使用SymFunctionTableAccess64进行函数表访问回调,并且符号处理程序已使用SymInitialize()初始化。我是否需要在dbghelp中使用一些魔法来让它正确地遍历托管帧 失败的调用堆栈示例: 非托管框架1 非托管框架2 非托管框架3 ManagedFrame1有什么帮助吗?它提供了从

我正在尝试使用StackWalk64在x64进程上遍历包含托管帧和本机帧的调用堆栈。在第一个或第二个受管帧出现之前,一切正常,之后StackWalk64无法确定帧的返回地址,因此失败

我正在使用SymFunctionTableAccess64进行函数表访问回调,并且符号处理程序已使用SymInitialize()初始化。我是否需要在dbghelp中使用一些魔法来让它正确地遍历托管帧

失败的调用堆栈示例:

非托管框架1

非托管框架2

非托管框架3

ManagedFrame1有什么帮助吗?它提供了从
windbg
visualstudio
以您希望的方式遍历堆栈的能力


或者可能有一些用处。

编写堆栈漫游机制的VS Profiler开发人员在这方面拥有专利。这是不平凡的。你有这方面的来源吗?我需要通过编程来完成这项工作,而不是从windbg。CLR分析API可以工作,但它依赖于有一个活动进程。我的目标是尽可能减少解决方案的占用空间,这就是为什么我不想依赖DbgEng来获取堆栈跟踪。