VS 2017 pdb файлы не читаются с DIA SDK - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь получить информацию о символах из приложения, созданного в Visual Studio 2017.

При использовании VS2015 в прошлом я мог читать символы с помощью DIA SDK.

Код (проверка ошибок удалена):

CComPtr<IDiaDataSource> pSource;
hr = CoCreateInstance(CLSID_DiaSource, NULL, CLSCTX_INPROC_SERVER, __uuidof(IDiaDataSource), (void **)&pSource);

hr = pSource->loadDataForExe(exepath, NULL, NULL);
CComPtr<IDiaSession> psession;      
CComPtr<IDiaSymbol> pGlobal;
hr = psession->get_globalScope(&pGlobal);

// Enumerate compilands
CComPtr<IDiaEnumSymbols> pEnumSymbols;
pGlobal->findChildren(SymTagCompiland, 0, nsNone, &pEnumSymbols);               
CComPtr<IDiaSymbol> pCompiland;
ULONG celt = 0;
while (SUCCEEDED(pEnumSymbols->Next(1, &pCompiland, &celt)) && (celt == 1))
    {
    ULONG celt = 0;
    CComPtr<IDiaSymbol> pSymbol;
    CComPtr<IDiaEnumSymbols> pEnumSymbols;
    HRESULT hr = pCompiland->findChildren(SymTagFunction, NULL, nsNone, &pEnumSymbols);
....

Последний вызов возвращает E_NOTIMPL.В прошлом это работало, и я смог получить символы для каждой компиляции.Код взят из инструмента dia2dump внутри DIA SDK, который также не работает.Я обнаружил https://github.com/Microsoft/microsoft-pdb, но исполняемый файл в этом репозитории также не работает (cvdump.exe -s test.exe показывает много 1167 найденных неизвестных символов).

Они изменили формат PDB, чтобы сделать его несовместимымс SDK?Или я упускаю что-то очень очевидное?

Спасибо.

РЕДАКТИРОВАТЬ: это происходит только в отладочных pdbs, pdbs компиляции режима выпуска работают.

...