StatusRivet
Сценарии работы

Настройка удалённой отладки Windows между двумя ПК в лаборатории

03
Настройка лаборатории

Подготовьте две лабораторные машины

Сессия удалённой отладки Windows подключает отладчик на одной машине к программе на другой через сеть и предназначена только для ваших собственных лабораторных машин. Сначала символы. Назовите одну машину хостом, а другую — целевой. Соберите программу с отладочными символами и сохраните соответствующий PDB для этой конкретной сборки, потому что несовпадающий PDB даёт неверные имена функций, а стек без символов показывает только адреса. Установите StatusRivet на хосте, где вы работаете, а целевую машину оставьте только для тестируемой программы. Запишите любые изменения настроек на обеих машинах, чтобы вы могли восстановить их позже. Воспроизведите сбой с помощью минимального входного набора, потому что короткий кейс даёт короткий стек и упрощает сравнение. Проверьте, что хост и целевая машина видят друг друга, прежде чем просить агента что-либо сделать, так как сбой подключения выглядит как сбой отладчика.

01

Откройте папку проекта

Выберите папку с исходным кодом и файлами сборки в качестве рабочей папки чата, потому что инструменты для работы с файлами читают и редактируют только внутри неё. Поместите туда сохранённый стек и заметки, чтобы весь кейс находился в одном месте, и агент мог прочитать всё.

02

Переключитесь в Ask first

Ask first приостанавливает действия, изменяющие что-либо, чтобы вы могли прочитать каждое из них перед запуском. Используйте Plan only, если хотите сначала увидеть шаги и ничего не запускать. План сохраняется после перезапуска, поэтому вы можете вернуться к нему позже.

03

Опишите сбой

Назовите программу, машины хоста и целевую, а также симптом, и укажите, что машины ваши. Укажите детали подключения из ваших собственных лабораторных заметок и не гадайте ни о чём. Укажите, какая сборка запущена на целевой машине и какой PDB ей соответствует.

04

Проверьте результат

Прочитайте diff, соберите снова с помощью вашей команды сборки и запустите вашу тестовую команду ещё раз на целевой машине. Сохраните заметки о том, что изменилось, вместе с контрольным списком, и сохраните старый дамп, если новый тест всё ещё не прошёл, чтобы следующая попытка начиналась с доказательств, а не с памяти.

Чек-лист сессии

debug-session.txt
# Debug session checklist
1. Build the app with debug symbols and keep the PDB
2. Note the build the crash happened on
3. Start the debugger on the host machine
4. Attach to the app running on the target
5. Reproduce the crash with the smallest input
6. Save a crash dump on the target
7. Save the faulting thread's call stack to stack.txt
8. Read the exception code and the top frames
9. Match the first frame to a source line
10. Propose a minimal fix and rebuild
11. Run the test again and note what changed

Простой текстовый чек-лист для одной сессии отладки между двумя лабораторными машинами. Он охватывает сборку с символами, подключение, воспроизведение сбоя с помощью минимального входного набора, сохранение дампа и стека вызовов, чтение верхних кадров и завершается тестовым запуском после исправления, с заметками о том, что изменилось. Скопируйте его в папку проекта и отредактируйте под свою лабораторию. Скопируйте и отредактируйте.

Анализ сбоя с помощью удалённого отладчика Windows

Подключение с машины хоста

Задача: подключиться с машины хоста к вашей собственной программе, запущенной на лабораторной целевой машине. Сначала подключение. Откройте папку проекта в StatusRivet, переключитесь в Ask first и опишите настройку. Shell запускает командную строку вашего отладчика с деталями подключения, которые вы ему даёте, а карточка показывает, удалось ли подключиться через реальный код выхода. Агент не придумывает настройки подключения, поэтому берите хост, целевую машину и порт из ваших собственных лабораторных заметок. Удалённая отладка предназначена только для ваших собственных лабораторных машин, никогда для компьютера, которым вы не владеете. Прочитайте карточку перед следующим шагом. Если подключение не удалось, ничего другого запускать не следует, сначала исправьте подключение, а затем попробуйте снова. Карточка также сохраняет точную команду, поэтому вы можете повторить её позже.

Сохраните дамп и стек вызовов

Задача: после воспроизведения сбоя на целевой машине с помощью минимального входного набора сохраните доказательства. Сохраните оба файла. Shell просит ваш отладчик записать дамп сбоя и сохранить стек вызовов потока, вызвавшего ошибку, в текстовый файл, а карточки показывают оба результата. Встроенный отладчик Windows (JIT) на целевой машине автоматически запускает отладчик при сбое приложения. Это системная настройка, поэтому меняйте её только на тестовой машине, запишите предыдущее значение и восстановите его afterwards. Чтобы найти причину системного сбоя по минидампу, начните с сохранённого стека вызовов. Вы одобряете каждый шаг в режиме Ask first, и вы сохраняете оба файла с контрольным списком для следующего человека, который будет читать кейс. Назовите файлы в соответствии со сборкой, чтобы их не перепутали.

Сопоставьте кадр со строкой исходного кода

Задача: свяжите верхний кадр с вашим кодом. Начните с символов. read_file открывает stack.txt, grep ищет в проекте имя функции и код исключения, например 0xC0000005 для нарушения прав доступа, а read_file открывает исходный файл на этой строке. С правильным PDB стек показывает имена функций, файлы исходного кода и номера строк, а без него вы видите только адреса. Зависшая машина, завершающаяся BSOD с ошибкой проверки безопасности ядра, — это случай для именно этой рутины: дамп, стек, исходный код. Прочитайте доказательства самостоятельно, прежде чем агент что-либо редактировать, потому что агент работает с текстом и не может пошагово выполнить программу за вас. Для пошагового выполнения используйте свой собственный отладчик и сообщите агенту, что вы увидели.

Предложите исправление и запустите тест заново

Задача: превратите находку в изменение. edit_file предлагает минимальный diff, например, пропущенную проверку на null или неверный индекс, и в режиме Ask first агент приостанавливается, чтобы вы могли прочитать изменённые строки. Shell затем запускает вашу команду сборки с символами и вашу тестовую команду, а карточки сообщают реальные коды выхода. Коррупция кучи в режиме ядра BSOD в драйвере, который вы написали, может проявиться спустя долгое время после неверной записи, поэтому проверяйте буферы, записанные ранее в стеке, а не только последний кадр. Неожиданное исключение store BSOD на вашей лабораторной целевой машине обрабатывается так же. Примите diff только после прохождения теста и запишите, что изменилось. Тестируйте перед принятием. Если тест всё ещё не прошёл, сохраните новый стек и начните цикл заново со второго шага.

StatusRivet для Windows

Настройте сессию в вашей лаборатории

Скачать StatusRivet ↗