Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Использование переключателей /stacktraceonerror и /minidumponerror
Существует два способа отслеживания трассировки стека и мини-дампов из тестов. Самый простой — режим «onerror». При выполнении тестов укажите переключатели "/stacktraceonerror" и/или "/minidumponerror". Затем, если произойдет сбой, Логгер будет захватывать трассировку стека и/или мини-дамп для вас в формате по умолчанию.
Другой способ отслеживания трассировки стека и мини-дампов — использовать API, описанные ниже.
использование функций WexDebug.h для записи трассировок стека и мини-дампов
WexDebug.h предоставляет API для записи трассировок стека вызовов и мини-дампов.
Вызовите API SaveDump для сохранения мини-дампа.
Этот API принимает необязательный параметр DWORD (который является флагом типа дампа или их сочетанием) и ссылку на строку, в которой возвращается строка, содержащая имя файла и путь к сохраненному файлу дампа. Имя файла автоматически создается API и основано на текущей дате и времени.
Необязательный параметр типа дампа указывает, что должен содержать сделанный мини-дамп. Он также указывает, будет ли дамп сохраняться в dmp-файле или cab-файле, и в случае cab-файлов, будут сохранены символы вместе с дампом. Если необязательный параметр опущен, используются параметры по умолчанию.
Пример (сохранить дамп в файл CAB вместе с его файлами PDB):
NoThrowString savedDumpFilePath;
HRESULT hr = Debug::SaveDump(MiniDumpFormat::WriteCab | MiniDumpFormat::WriteCabSecondaryFiles, savedDumpFilePath);
Обратите внимание, что сохранение дампа в cab-файл занимает больше времени, чем сохранение обычного дампа; присоединение файлов символов отнимает еще больше времени.
API Вызова GetStack для получения трассировки стека вызовов.
Этот API принимает необязательный параметр DWORD (который является флагом или комбинацией флагов) и строковую ссылку, в которую возвращается строка, содержащая трассировку стека вызовов для текущего контекста.
Необязательный параметр типа стека указывает, какое содержимое должна иметь трассировка стека. Если необязательный параметр опущен, используются параметры по умолчанию.
Пример:
NoThrowString stackText;
HRESULT hr = Debug::GetStack(CallStackFormat::ColumnNames | CallStackFormat::FrameAddress |
CallStackFormat::SourceLine, stackText);
Корреляция флагов параметров стека с командами отладчика. Если вы используете семейство отладчиков windbg, то может пригодиться следующий приблизительный список корреляций:
Синтаксис отладчика | Соответствующие флаги |
---|---|
k | CallStackFormat::ColumnNames |
kv | k + CallStackFormat::FunctionInfo |
kp / kP | k + CallStackFormat::Parameters |
Кн | k + CallStackFormat::FrameNumbers |
кф | k + CallStackFormat::FrameMemoryUsage |
Технический справочник по
Если вы заинтересованы в получении дополнительной информации о необязательных параметрах дампа и стека, обратитесь к документации, предоставленной с Средствами отладки для Windows. Документацию по флагам дампа см. в разделе DEBUG_FORMAT_XXX. Документацию по флагам стека см. в OutputStackTrace.