Вывести n уровней callstack? - PullRequest
10 голосов
/ 27 августа 2009

Используя C ++ с Visual Studio, мне было интересно, есть ли API, который будет печатать для меня стеки вызовов. Предпочтительно, я бы хотел напечатать колл-стэк глубиной 5 уровней. Предоставляет ли Windows простой API для этого?

Ответы [ 4 ]

9 голосов
/ 27 августа 2009

Похоже, библиотека Microsoft DbgHelp может делать то, что вы хотите. Обратитесь к документации по функции StackWalk64 на MSDN для получения дополнительной информации. Кроме того, эта статья CodeProject может быть полезна.

5 голосов
/ 28 августа 2009

Есть несколько способов сделать это.

См. Как регистрировать кадры стека в Windows x64

На мой взгляд, самым простым и надежным способом является функция Win32 API:

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

Этот параметр FramesToCapture определяет максимальную возвращаемую глубину стека вызовов.

1 голос
/ 27 августа 2009

Полагаю, вы можете получить это из их API отладчика ( dbghelp ).

0 голосов
/ 27 августа 2009

Посмотрите на API Stackwalk и Stackwalk64 API DbgHelp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...