저는 Detours를 사용하여 다양한 메모리 할당 기능을 패치하는 C++의 메모리 추적 시스템을 작성했습니다. malloc 외에도 malloc에 대한 호출을 받으면 stacktrace도 저장합니다 (그래서 누수 지점을 지정할 수 있습니다).메모리 누수를 추적 할 때 stacktrace를 얻는 방법은 무엇입니까?
정확한 스택 추적을 얻는 유일한 신뢰할 수있는 방법은 StackWalk64를 사용하는 것입니다 (RtlCaptureStackBackTrace를 시도했는데이 스택은 매우 단순한 스택 만 처리 할 수있었습니다).
그러나 여기 내 문제는, StackWalk64 차례로 StackWalk64 호출하여 스택 오버플로가 malloc 호출합니다. 이제는 재귀 호출을 처리하는 플래그를 가질 수 있지만 다중 스레드에서는 작동하지 않습니다.
이 피클에 가능한 해결책이 있는지 궁금합니다.
감사 리치 Carless
FLS ('FlsAlloc','FlsSetValue','FlsGetValue' 및 friends)에 플래그를 저장할 수 없습니까? –
어쩌면이 시스템이 XP 및 Windows 2003에서 실행될 것이라고 덧붙여 야합니다. – Rich