В настоящее время я использую библиотеку dbghelp , чтобы пройти по стеку потока какого-то процесса (используя GetThreadContext () и StackWalk64 () ) и собирать толькоадреса возврата, содержащиеся в каждом кадре.
Тем не менее, накладные расходы слишком велики для требований системы - общее время составляет apx.5 мсек на стековую прогулку (с 10-15 кадрами).На этот раз включает GetThreadContext () и цикл, который вызывает StackWalk64 (), чтобы получить все кадры.
В любом случае, я должен найти способ сделать это намного быстрее.У кого-нибудь есть идеи, как мне это сделать?
Редактировать:
Кто-нибудь знает механизм ETW (Event Tracing for Windows)?
Если так, как я могу отследить все переключения контекста, которые произошли в определенный период времени?Есть ли поставщик событий, который публикует событие при каждом переключении контекста?