打印n级callstack?

10 c c++ debugging visual-studio visual-c++

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

bca*_*cat 9

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


RED*_*AIR 5

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

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

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

USHORT WINAPI CaptureStackBackTrace(
     __in       ULONG FramesToSkip,
     __in       ULONG FramesToCapture,
     __out      PVOID *BackTrace,
     __out_opt  PULONG BackTraceHash
);
Run Code Online (Sandbox Code Playgroud)

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