【发布时间】:2010-11-23 10:19:27
【问题描述】:
在 Visual Studio 中使用 C++,我想知道是否有一个 API 可以为我打印调用堆栈。最好,我想打印一个 5 层深的调用堆栈。 windows 是否提供了一个简单的 API 来允许我这样做?
【问题讨论】:
标签: c++ c visual-studio debugging visual-c++
在 Visual Studio 中使用 C++,我想知道是否有一个 API 可以为我打印调用堆栈。最好,我想打印一个 5 层深的调用堆栈。 windows 是否提供了一个简单的 API 来允许我这样做?
【问题讨论】:
标签: c++ c visual-studio debugging visual-c++
看起来 Microsoft 的 DbgHelp 库可以满足您的需求。有关详细信息,请参阅 MSDN 上的 StackWalk64 函数文档。另外,this CodeProject article 可能有用。
【讨论】:
查看 DbgHelp API 的 Stackwalk 和 Stackwalk64 API。
【讨论】:
我相信你可以从他们的调试器 API (dbghelp) 中得到它。
【讨论】:
有很多方法可以做到这一点。
见How to Log Stack Frames with Windows x64
在我看来,最简单也是最可靠的方法是 Win32 API 函数:
USHORT WINAPI CaptureStackBackTrace(
__in ULONG FramesToSkip,
__in ULONG FramesToCapture,
__out PVOID *BackTrace,
__out_opt PULONG BackTraceHash
);
此 FramesToCapture 参数,确定返回的最大调用堆栈深度。
【讨论】: