MCPcopy Create free account
hub / github.com/Vector35/debugger / GetModuleList

Method GetModuleList

core/adapters/dbgengadapter.cpp:1028–1071  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1026
1027
1028std::vector<DebugModule> DbgEngAdapter::GetModuleList()
1029{
1030 if (!this->m_debugSymbols)
1031 return {};
1032
1033 unsigned long loaded_module_count {}, unloaded_module_count {};
1034
1035 if (this->m_debugSymbols->GetNumberModules(&loaded_module_count, &unloaded_module_count) != S_OK)
1036 return {};
1037
1038 if (!loaded_module_count)
1039 return {};
1040
1041 std::vector<DebugModule> modules {};
1042
1043 const auto total_modules = loaded_module_count + unloaded_module_count;
1044 auto module_parameters = std::make_unique<DEBUG_MODULE_PARAMETERS[]>(total_modules);
1045 if (this->m_debugSymbols->GetModuleParameters(total_modules, nullptr, 0, module_parameters.get()) != S_OK)
1046 return {};
1047
1048 for (std::size_t module_index {}; module_index < total_modules; module_index++)
1049 {
1050 const auto& parameters = module_parameters[module_index];
1051
1052 char name[1024];
1053 char short_name[1024];
1054 char loaded_image_name[1024];
1055 if (this->m_debugSymbols->GetModuleNames(
1056 module_index, 0, name, 1024, nullptr, short_name, 1024, nullptr, loaded_image_name, 1024, nullptr)
1057 != S_OK)
1058 continue;
1059
1060 if (m_usePDBFileName &&(!m_pdbFileName.empty()) &&
1061 DebugModule::IsSameBaseModule(short_name, m_pdbFileName))
1062 {
1063 strcpy_s(name, 1024, m_originalFileName.c_str());
1064 }
1065
1066 modules.emplace_back(
1067 name, short_name, parameters.Base, parameters.Size, !(parameters.Flags & DEBUG_MODULE_UNLOADED));
1068 }
1069
1070 return modules;
1071}
1072
1073bool DbgEngAdapter::BreakInto()
1074{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected