当前位置: 首页>>代码示例>>C++>>正文


C++ Symbols::GetSymbolLineInfo方法代码示例

本文整理汇总了C++中Symbols::GetSymbolLineInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ Symbols::GetSymbolLineInfo方法的具体用法?C++ Symbols::GetSymbolLineInfo怎么用?C++ Symbols::GetSymbolLineInfo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Symbols的用法示例。


在下文中一共展示了Symbols::GetSymbolLineInfo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: SymEnumCallback

BOOL CALLBACK Symbols::SymEnumCallback(PSYMBOL_INFO pSymInfo, ULONG ulSymbolSize, PVOID pUserContext)
{
    UserContext *pContext = (UserContext *)pUserContext;
    Symbols *pThisPtr = (Symbols *)pContext->pThis;
    DWORD_PTR dwAddress = (DWORD_PTR)pSymInfo->Address;
    DWORD_PTR dwModBase = (DWORD_PTR)pSymInfo->ModBase;

    //fprintf(stderr, "Symbol found at %p. Name: %.*s. Base address of module: %p\n",
    //    dwAddress, pSymInfo->NameLen, pSymInfo->Name, dwModBase);

    bool bSuccess = false;
    SymbolInfo symbolInfo;
    symbolInfo.dwAddress = dwAddress;
    symbolInfo.strName = std::move(std::vector<char>(pSymInfo->Name, pSymInfo->Name + strlen(pSymInfo->Name)));
    symbolInfo.strName.emplace_back(0);

    IMAGEHLP_LINE64 lineInfo = pThisPtr->GetSymbolLineInfo(dwAddress, symbolInfo.dwDisplacement, bSuccess);
    if (bSuccess)
    {
        symbolInfo.dwLineNumber = lineInfo.LineNumber;
        symbolInfo.strSourceFile = std::move(std::vector<char>(lineInfo.FileName, lineInfo.FileName + strlen(lineInfo.FileName)));
        symbolInfo.strSourceFile.emplace_back(0);
    }

    ModuleSymbolInfo moduleSymbol;
    moduleSymbol.dwModuleBaseAddress = dwModBase;
    moduleSymbol.strName = std::move(std::vector<char>(pContext->pName, pContext->pName + strlen(pContext->pName)));
    moduleSymbol.strName.emplace_back(0);
    moduleSymbol.symbolInfo = std::move(symbolInfo);

    pThisPtr->m_mapSymbols.insert(std::make_pair(dwModBase, std::move(moduleSymbol)));

    return TRUE;
}
开发者ID:codereversing,项目名称:debugger,代码行数:34,代码来源:Symbols.cpp


注:本文中的Symbols::GetSymbolLineInfo方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。