打印n级callstack?

时间:2009-08-27 15:23:04

标签: c++ c visual-studio debugging visual-c++

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

4 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:5)

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

请参阅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参数确定返回的最大调用堆栈深度。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

查看DbgHelp API的Stackwalk和Stackwalk64 API。

相关问题