打印n级callstack?

在Visual Studio中使用C ++,我想知道是否有一个API会为我打印callstack。 最好,我想打印5级深度的callstack。 Windows是否提供了一个简单的API来允许我这样做?

有很多方法可以做到这一点。

请参见如何使用Windows x64记录堆栈帧

在我看来,最简单,最可靠的方法是Win32 API函数:

USHORT WINAPI CaptureStackBackTrace( __in ULONG FramesToSkip, __in ULONG FramesToCapture, __out PVOID *BackTrace, __out_opt PULONG BackTraceHash ); 

此FramesToCapture参数确定返回的最大调用堆栈深度。

看起来微软的DbgHelp库可以做你想要的。 有关更多信息,请参阅MSDN上的StackWalk64函数文档。 此外, 此CodeProject文章可能会有用。

我相信你可以从他们的调试器API( dbghelp )中获得它。

看看DbgHelp API的Stackwalk和Stackwalk64 API。