我已经在DLL中实现了_penter和_pexit函数,并且我试图获取称为_penter和_pexit的函数名称。我正在尝试使用CaptureStackBackTrace获取stacktrace,并从它收集的堆栈框架中获取我的函数名称,但是在框架中我只看到DLL的函数。它似乎没有我的主要流程的任何框架。如何获得调用_penter和_pexit的函数的名称?有简单的方法吗?我还看到对CaptureStackBackTrace的调用发生崩溃。我很确定我的asm文件(实现the_penter和_pexit)是正确的,因为如果我的_penter和_pexit为空,则可以正常工作。
我得到如下的堆栈跟踪,
process = GetCurrentProcess();
SymInitialize(process, NULL, TRUE);
frames = CaptureStackBackTrace(0, 100, stack, NULL);
以及这样的框架的细节,
SymFromAddr(process, (DWORD64)(stack[1]), 0, symbol);