Используя С++ с Visual Studio, мне было интересно, есть ли API, который будет печатать для меня стоп-код. Желательно, чтобы я напечатал столбец 5 уровней в глубину. Предоставляет ли Windows простой API, позволяющий мне это делать?
Печать n уровней вызова?
Ответ 1
Существует несколько способов сделать это.
См. Как скопировать фреймы стека с Windows x64
На мой взгляд, самым простым и наиболее надежным способом является функция Win32 API:
USHORT WINAPI CaptureStackBackTrace(
__in ULONG FramesToSkip,
__in ULONG FramesToCapture,
__out PVOID *BackTrace,
__out_opt PULONG BackTraceHash
);
Этот параметр FramesToCapture определяет максимальную глубину стека вызовов.
Ответ 2
Похоже, что библиотека Microsoft DbgHelp может делать то, что вы хотите. Для получения дополнительной информации обратитесь к документации по функциям StackWalk64 на MSDN. Кроме того, эта статья CodeProject может быть полезна.
Ответ 3
Я считаю, что вы можете получить это из своего API отладчика (dbghelp).
Ответ 4
Посмотрите на API Stackwalk и Stackwalk64 API DbgHelp.