gpt4 book ai didi

c++ - 优化 Stack-Walking 性能

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:57 24 4
gpt4 key购买 nike

目前我使用 dbghelp 库遍历某些进程线程的堆栈(使用 GetThreadContext()StackWalk64())并仅收集每个帧包含的返回地址。

但是,这样做的开销对于系统需求来说太大了——总时间是 apx。每个堆栈步行 5 毫秒(10-15 帧)。这次包括 GetThreadContext() 和调用 StackWalk64() 以获取所有帧的循环。

无论如何,我必须找到一种方法来更快地做到这一点。任何人都知道我该怎么做?


编辑:

有谁知道 ETW (Event Tracing for Windows) 机制?

如果是这样,我如何跟踪特定时间段内发生的所有上下文切换?是否有事件提供程序在每次上下文切换时发布事件?

最佳答案

我能想到的最快的方法是创建您自己的 GetThreadContextStackWalk64 版本,方法是创建一个获取 kernelStack 您试图监视的线程的 ETHREAD 结构字段。 Here是一篇关于这个主题的好文章。

关于c++ - 优化 Stack-Walking 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com