Как отладить приложение C # .NET в Visual Studio 2010, запущенное из другого процесса - PullRequest
5 голосов
/ 20 мая 2011

У меня есть приложение .NET GUI, написанное на C #, и принтер PDF.У PDF-принтера есть поле, в котором вы можете задать команду для запуска внешнего приложения.

В этом случае я могу напечатать документ на этом принтере, и принтер запускает мой EXE-файл с путем к файлу в сгенерированный PDFфайл в качестве аргумента.Как я могу отлаживать свое приложение, когда оно запускается с принтера?

В Visual Studio 2010 я могу установить отладочную информацию для аргументов командной строки, и это прекрасно работает.Но если приложение запускается с принтера, приложение не работает нормально.Поэтому я хочу отлаживать приложение, когда оно запускается с принтера.Как я могу это сделать?Есть ли параметр для запуска EXE-файла в режиме отладки или что-то вроде этого?

Ответы [ 3 ]

9 голосов
/ 20 мая 2011

Попробуйте подключиться к процессу:

http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx

Чтобы подключиться к запущенному процессу 1. В меню «Отладка» выберите «Присоединить к процессу».Если ни один проект не открыт, выберите «Присоединить к процессу» в меню «Инструменты».

2. В диалоговом окне «Присоединить к процессу» найдите программу, к которой хотите подключиться, из списка «Доступные процессы».

a. Если программа, которую вы хотите отладить, запущена на другом компьютере, вы должны сначала выбрать удаленный компьютер.Для получения дополнительной информации см. Как: выбрать удаленный компьютер.

b.Если процесс выполняется под другой учетной записью пользователя, установите флажок Показать процессы от всех пользователей.

c. Если вы подключены через подключение к удаленному рабочему столу, выберите Показать процессыво всех сеансах установите флажок.

3.В поле «Присоединить к» убедитесь, что указан тип кода, который вы будете отлаживать.Автоматическая настройка по умолчанию пытается определить, какой тип кода вы хотите отлаживать.Если автоматическая настройка не подходит:

a.Нажмите «Выбрать».

b.В диалоговом окне «Выбор типа кода» нажмите Отладка этих типов кода и выберите типы для отладки.

c.Нажмите ОК.

4.Нажмите Прикрепить.

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

Вы можете подключаться к нескольким программам во время отладки, но только одна программа активна в отладчике в любое время.Вы можете установить активную программу на панели инструментов «Отладка» или в окне «Процессы».Для получения дополнительной информации см. Как: установить текущую программу.

Все команды выполнения меню «Отладка» влияют на активную программу.Вы можете отключить любую отлаженную программу из диалогового окна «Процессы» или все подключенные программы из меню «Отладка».Для получения дополнительной информации см. Как: прервать выполнение.

8 голосов
/ 20 мая 2011

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

Перейти к

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

Создать новый ключ с именем исполняемого файла, как он появится в Диспетчер задач , например, myapp.exe.При этом создайте новое строковое значение с именем debugger и установите его на vsjitdebugger.exe.

Теперь, когда запускается EXE-файл, появится окно с вопросом, к какому отладчику подключиться.

1 голос
/ 28 июня 2013

Рассмотрите возможность добавления в ваш код вызова, который явно запрашивает присоединение отладчика в текущем местоположении. Это происходит с Win32 дней, и в .NET выглядит как System.Diagnostics.Debugger.Break System.Diagnostics.Debugger.Launch ).

Вы также можете добавить логику, чтобы решить, когда вызывать это, если вы не хотите делать это в первый раз:

   #if DEBUG
      if (++staticCounter > 3) System.Diagnostics.Debugger.Break();
   #endif

И, конечно, вы захотите отключить его для производства.

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