Как отладить процесс с помощью Visual Studio? - PullRequest
5 голосов
/ 12 декабря 2008

Если приложение † падает,

enter image description here

Я нажал «Отладка», и Visual Studio - мой зарегистрированный отладчик Just-In-Time (JIT):

enter image description here

Появляется Visual Studio, но нет возможности отладить что-либо:

enter image description here

  • разборки не вижу
  • Я не вижу регистров (при условии, что он работает на процессоре с регистрами)
  • Стек вызовов пуст (при условии, что у CPU есть указатель стека)
  • Я не вижу никаких символов (при условии, что они есть)
  • Я не вижу восстановленный исходный код из отражения (при условии, что он был управляем)

Другие продукты отладчика JIT могут показывать разборку, но они либо основаны на командной строке ( Средства отладки для Windows ), либо не поддерживают символы ( OllyDbg , Delphi ). Кроме того, мой вопрос касается отладки с помощью Visual Studio, поскольку она у меня уже установлена, и это уже мой зарегистрированный JIT.

Как отлаживать программу с помощью Visual Studio?

В качестве альтернативы : кто-нибудь написал графический отладчик, который поддерживает сервер символов Microsoft?

† Не обязательно написано в Visual Studio.

Редактировать: Изменяет заголовок на процесс , а не приложение , поскольку последнее как-то подразумевает " мое приложение."

Редактировать: Предположим, что оригинальное приложение было написано на ассемблере Стивом Гибсоном. То есть, нет исходного кода или отладочной информации. Visual Studio все еще должна показывать мне дамп сборки.

Ответы [ 6 ]

3 голосов
/ 18 марта 2010

На скриншоте видно, что Visual Studio в настоящее время отлаживается в режиме выполнения - вам нужно прервать выполнение процесса, прежде чем имеет смысл взглянуть на такие вещи, как стек вызовов и т. Д. *

Чтобы прервать выполнение процесса, вам нужно либо достичь точки останова, либо вы можете прервать выполнение процесса в любое время, используя элемент панели инструментов Пауза / Разбить все ( Управление + Alt + Перерыв ).

Тогда вы сможете получить доступ к следующим окнам в меню «Отладка -> Windows»:

  • Окно разборки
  • Окно регистров
  • Окно стека вызовов
  • Окно модулей показывает список загруженных модулей вместе с тем, откуда загружены соответствующие символы (если загружены)

Некоторые другие полезные окна:

  • Окно процессов полезно, если вы отлаживаете более одного процесса одновременно
  • Окно Темы
  • Окно Памяти (их четыре)
  • Окно местных жителей

Некоторые из них могут не отображаться по умолчанию в зависимости от конфигурации окна, выбранной вами при первом запуске Visual Studio - если вы не можете их найти, щелкните правой кнопкой мыши на панели инструментов и перейдите к настройке, чтобы добавить их.

Visual studio не восстанавливает исходный код из дизассемблирования - вам действительно нужно иметь исходный исходный код, доступный вам, иначе символы почти наверняка не будут соответствовать исходному коду, который вы отлаживаете.

Если вы отлаживаете неуправляемые модули без исходного кода, то я рекомендую вам по крайней мере попробовать WinDbg - его пользовательский интерфейс иногда немного неуклюж, и у него есть крутое обучение Кривая, однако, это очень мощный отладчик, поддерживающий многие функции, которых нет в Visual Studio - он может больше подходить для отладки, которая вам необходима.

(Visual Studio - фантастический отладчик, однако он в основном используется для отладки модулей, в которых доступен исходный код, и поэтому ему не хватает определенных функций в пользу лучшего взаимодействия с пользователем).

2 голосов
/ 12 декабря 2008

Предполагая, что это ваше приложение, которое вы написали в VS, просто нажмите F5, чтобы запустить программу, и либо использовать точку останова, либо вручную прервать программу, чтобы начать отладку.

1 голос
/ 17 марта 2010

Использование меню Отладка -> Windows -> Разборка (я думаю, что сочетание клавиш Alt + 8 , но я настроен для привязок VC 6.0, потому что именно так я и работаю, и это могло измениться).

Вы можете получить открытые символы для операционной системы из http://msdl.microsoft.com/download/symbols. Добавьте его в список в меню Инструменты -> Параметры -> Отладка -> Символы -> Расположение файлов символов .

Кроме того, убедитесь, что вы работаете на том же уровне целостности, что и приложение. Или всегда запускайте Visual Studio от имени администратора.

1 голос
/ 22 декабря 2009

Вы можете отлаживать программу в Visual Studio, если у вас есть отладочная информация, доступная для этой программы. Это разница между компиляцией версии Release (обычно без отладочной информации) и компиляцией версии Debug.

Это диалоговое окно для отладки программы удобно, если вы тестируете отладочную версию вашей самостоятельно написанной программы. Вы можете подключить его «на лету» к отладчику Visual Studio и найти проблему.

Если это не ваша программа или ваша программа, но она не предоставляет отладочную информацию, которую может понять Visual Studio, то вам не повезло.

1 голос
/ 21 декабря 2009

Проблема на последнем скриншоте заключается в том, что Visual Studio не перешел в режим прерывания автоматически. Это похоже на ошибку. Если вы нажмете кнопку «пауза» на панели инструментов, она перейдет в режим прерывания, что даст вам разборку и стек вызовов.

В соответствии с последним снимком экрана, который вы на самом деле прикрепили к программе ... в окнах вывода отображается загруженные символы для OLE и crt.

0 голосов
/ 08 декабря 2011

Полагаю, вы уже находитесь в режиме отладки. Кнопка «Выполнить» отключена. Просто зайдите в Debug -> windows -> Disassembly для просмотра разборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...