できるだけ早くコールスタックをキャプチャしようとしています。コールスタックをすばやくキャプチャします。
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倍長くなり、そのほとんどはスタックトレースのためです。私はまだ高速なソリューションを探しています!