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