가능한 한 빨리 호출 스택을 캡처하려고합니다. 지금이 내가있어 무엇 :호출 스택을 빠르게 캡처하십시오.
이 메모리 추적 시스템에 사용하기위한 것입니다, 그래서 나는 그들이 나중에 할 수있는 경우 (일부 사용자 중심의 이벤트에 따라 주소의 배열로 끝날 것을 완벽하게 괜찮void* addrs[10] = {};
DWORD hash;
RtlCaptureStackBackTrace(0, 10, addrs, &hash);
for(size_t i = 0; i <10; ++i)
{
std::cout << addrs[i] << '\n';
}
) 인간이 읽을 수있는 무언가로 바뀌십시오.
-
addrs
을 사람이 읽을 수있는 것으로 변환하려면 어떻게해야합니까? - 이
RtlCaptureStackBackTrace
보다 더 빨리 있나요 (아래 편집 참조)? - 호출 스택을 캡처하는 데 교차 플랫폼 방식이 있습니까?
편집 :
내가 SymFromAddr
및 SymGetLineFromAddr64
를 사용하여 사람이 읽을 수있는 정보로 주소를 돌았 다. 그러나, 내 버전 new
의 CaptureStackBackTrace
을 사용하면 원본보다 30 배 오래 걸리고 거의 모든 시간이 스택 추적으로 인해 발생합니다. 나는 여전히 더 빠른 해결책을 찾고있다!