IDiaDataSource::loadDataForExe
Открывает и подготавливает данные отладки, связанные с файлом .exe/.dll.
Синтаксис
HRESULT loadDataForExe (
LPCOLESTR executable,
LPCOLESTR searchPath,
IUnknown* pCallback
);
Параметры
executable
[in] Путь к файлу .exe или .dll.
searchPath
[in] Альтернативный путь для поиска данных отладки.
pCallback
[in] Интерфейс IUnknown
для объекта, который поддерживает интерфейс обратного вызова отладки, например IDiaLoadCallback, IDiaLoadCallback2, IDiaReadExeAtOffsetCallback и /или интерфейсы IDiaReadExeAtRVACallback .
Возвращаемое значение
В случае успешного выполнения возвращается S_OK
; в противном случае возвращается код ошибки. В следующей таблице показаны некоторые возможные коды ошибок для этого метода.
значение | Описание |
---|---|
E_PDB_NOT_FOUND | Не удалось открыть файл или файл имеет недопустимый формат. |
E_PDB_FORMAT | Попытка получить доступ к файлу с устаревшим форматом. |
E_PDB_INVALID_SIG | Подпись не соответствует. |
E_PDB_INVALID_AGE | Возраст не соответствует. |
E_INVALIDARG | Недопустимый параметр . |
E_UNEXPECTED | Источник данных уже подготовлен. |
Замечания
Заголовок отладки файла .exe/.dll называет связанное расположение данных отладки.
Если данные отладки загружаются с сервера символов, symsrv.dll должны присутствовать в том же каталоге, где установлено приложение пользователя или msdia140.dll, или он должен присутствовать в системном каталоге.
Этот метод считывает заголовок отладки, а затем ищет и подготавливает данные отладки. Ход выполнения поиска может сообщаться и контролироваться с помощью обратных вызовов. Например, метод IDiaLoadCallback::NotifyDebugDir вызывается при поиске IDiaDataSource::loadDataForExe
и обработке каталога отладки.
Интерфейсы IDiaReadExeAtOffsetCallback и IDiaReadExeAtRVACallback позволяют клиентскому приложению предоставлять альтернативные методы для чтения данных из исполняемого файла, если доступ к файлу невозможен напрямую через стандартный ввод-вывод файла.
Чтобы загрузить PDB-файл без проверки, используйте метод IDiaDataSource::loadDataFromPdb .
Чтобы проверить PDB-файл с определенными критериями, используйте метод IDiaDataSource::loadAndValidateDataFromPdb .
Чтобы загрузить PDB-файл непосредственно из памяти, используйте метод IDiaDataSource::loadDataFromIStream .
Пример
class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExe( L"myprog.exe", L".\debug", (IUnknown*)&callback);
if (FAILED(hr))
{
// Report error
}