Как отладить процесс с помощью Visual Studio?

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

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

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

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

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

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

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

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

11.12.2008 21:05:24
Я не понимаю Это твоя программа? Или кто-то еще?
GEOCHET 11.12.2008 21:11:30
Да. Один и тот же вопрос относится к обоим. Если это мое собственное приложение, то я хочу отладить исполняемый файл. Если это кто-то другой, то я хочу отладить исполняемый файл.
Ian Boyd 11.12.2008 21:28:13
Если это ваше, вы были бы в VS, и вы бы выполнили шаги в моем ответе. Если это не ваше, вы, вероятно, будете очень ограничены, если символы отладки не включены.
GEOCHET 11.12.2008 21:29:26
@ Rich B: я не внутри VS, так как вы видите диалог сбоя Windows, а не VS, перехватывающий его.
Ian Boyd 21.12.2009 19:33:57
Это нативный или управляемый код?
i_am_jorf 17.03.2010 17:41:12
6 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

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

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

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

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

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

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

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

3
3.04.2015 00:17:42

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

2
11.12.2008 21:14:05
Как загрузить исполняемый файл в Visual Studio?
Ian Boyd 11.12.2008 21:28:43
Если это ваша программа, вы разрабатываете ее в VS. Просто нажмите F5. Если это что-то помимо этого, вам нужно будет предоставить гораздо больше деталей в вопросе.
GEOCHET 11.12.2008 21:32:25
Он не пишет приложение, это когда он получает программы, когда он является конечным пользователем сбоя (необработанные исключения). Таким образом, у него нет исходного кода.
Jeff 11.12.2008 22:35:09
Не каждый исполняемый файл Win32, написанный сегодня, создается с помощью Visual Studio.
Ian Boyd 21.12.2009 19:30:28

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

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

1
3.04.2015 00:19:23

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

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

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

1
3.04.2015 00:20:32

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

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

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

1
3.04.2015 00:22:11

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

0
8.12.2011 18:31:41