我正在打印一些关于调用堆栈的调试信息。我可以使用SymFromAddr轻松获取函数名称
void getFunctionInfo(FunctionInfo& funcInfo, uintptr_t address)
{
DWORD64 dwDisplacement; //not used
static char buffer[ sizeof(SYMBOL_INFO) + MAX_SYM_NAME ];
PSYMBOL_INFO pSymbol = (PSYMBOL_INFO) buffer;
pSymbol->SizeOfStruct = sizeof(SYMBOL_INFO);
pSymbol->MaxNameLen = MAX_SYM_NAME;
if ( SymFromAddr( m_process, address, &dwDisplacement, pSymbol) )
{
strcpy(funcInfo.funcName, pSymbol->Name, MAX_SYM_NAME);
}
//TODO get function arguments
}
但是,我想重现函数的完整签名,以便消除覆盖之间的歧义,并基本上重现 Visual Studio 调用堆栈窗口中显示的内容。我无法找到实现此目的的 api 调用。
有吗?