静态库中的堆栈帧非常慢

时间:2017-01-01 12:35:24

标签: c++ windows memory-management

我正在为我的https://github.com/mikelsv/msvcore2库编写内存管理器。使用拦截函数:malloc()realloc()free()

问题:在openssl库(或其他任何)中调用的my_malloc()中获取堆栈帧。 示例堆栈:RSA_generate_key() -> BN_new -> CRYPTO_zalloc -> my_malloc()

解。

  1. CaptureStackBackTrace()。返回短筹码,只有" CRYPTO_zalloc"。不好。

  2. __asm {mov prev,ebp}的变体对我不起作用。

  3. StackWalk() - 工作。但是,非常慢。

  4. 如何尽快在静态库中获取堆栈帧?

    我使用的是MSVS 2010& 2012。

    哦,等等!我的GetStackTypeInfo()只需要第4帧。快速修复:if(CaptureStackBackTrace() have 4th frame){ use it; } else StackWalk()。它的工作版本更好。但是,也很慢。

    我的记忆管理员https://github.com/mikelsv/memman。内存控制:https://github.com/mikelsv/msvcore2/blob/master/define/memcon.h,获取堆栈信息:GetStackTypeInfo() - https://github.com/mikelsv/msvcore2/blob/master/define/memcon.h#L738

0 个答案:

没有答案