我用Detours在C++中编写了一个内存追踪系统,以修补各种内存分配函数。当我接收到malloc的调用时,除了malloc外,我还会存储堆栈跟踪(这样我就可以定位泄漏)。
获取准确堆栈跟踪的唯一可靠方法是使用StackWalk64(我尝试了RtlCaptureStackBackTrace,但只能捕获非常简单的堆栈)。
然而,我的问题在于,StackWalk64调用malloc,malloc再调用StackWalk64,导致堆栈溢出。现在我可以设置一个处理递归调用的标志,但这无法处理多个线程。
我想知道是否有人对此有可能的解决方案。
谢谢 Rich Carless
获取准确堆栈跟踪的唯一可靠方法是使用StackWalk64(我尝试了RtlCaptureStackBackTrace,但只能捕获非常简单的堆栈)。
然而,我的问题在于,StackWalk64调用malloc,malloc再调用StackWalk64,导致堆栈溢出。现在我可以设置一个处理递归调用的标志,但这无法处理多个线程。
我想知道是否有人对此有可能的解决方案。
谢谢 Rich Carless
FlsAlloc
,FlsSetValue
,FlsGetValue
等)中吗? - Remus Rusanu