Отладка без головы на Windows - PullRequest
0 голосов
/ 30 января 2020

Существует ошибка, которую я хотел бы исправить, которая возникает только на Windows Сервере без GUI. Я установил на Google Compute Engine компьютер Windows Server 2019, который воспроизводит ошибку, и хотел бы отладить его.

В идеале я хотел бы использовать gdb, но, поскольку программа была построена с Visual Studio 2019, gdb не может прочитать символы отладки.

У меня нет машины Windows, поэтому использование Visual Studio будет затруднено. Я мог бы настроить виртуальную машину, но если есть способ сделать это в терминале, который будет предпочтительным.

Я провел довольно тщательный поиск в Google, но ничего не получилось. Неужели нет Windows решения для отладки кода C ++ без головы?

1 Ответ

1 голос
/ 30 января 2020

MS имеет 2 консольных отладчика, которые называются CDB и NTSD , поэтому вам не требуется Visual Studio GUI для отладки. На самом деле существует множество сред отладки в Windows от MS, кроме обычной Visual Studio. Просто установите их на свой Windows сервер и управляйте ими удаленно с вашего терминала

Вы также можете отлаживать код, скомпилированный в MSV C, с LLDB, так как формат PDB издавался долгое время go и LLVM на Windows поддерживают его . Понятия не имею о текущем LLDB на Linux, хотя

И поскольку у вас есть исходный код, иногда отладчик старой школы printf - лучший способ проанализировать проблему


Если вы можете получить Windows VM, будет гораздо лучше сделать удаленную отладку . Фактически почти все отладчики поддерживают эту функцию, включая GDB или LLDB, поэтому даже если у вас нет исходного кода, вы все равно можете запустить любой Windows отладчик и выполнять инструкции вместо высокоуровневого кода линии от удаленного компьютера

Альтернативный способ - взять дамп памяти и позже отладить . Получив файл дампа, просто перетащите его в решение VS или любой инструмент отладки , например WinDbg , а затем выберите «Начать отладку». Теперь вы можете просматривать инструкции / строки кода и проверять значения переменных или переходить к кадру стека произвольной функции, как будто вы действительно запускаете некорректно работающее приложение

Существует много способов выгрузки памяти процесса , Вы можете настроить Windows на автоматическое сохранение файла дампа при сбое приложения или просто делать снимки памяти вручную во время выполнения. Сравнение 2 снимков также полезно для обнаружения утечки памяти. Для получения дополнительной информации о том, как это сделать, читайте

Существует также простой способ получить дамп живого процесса, используя task manager (или любые другие подобные инструменты )

Create dump file in task manager

...