Я знаю, что я могу запустить процесс с кодом Process.Start()
.
Можно ли также подключить отладчик к этому процессу?
Не из кода как такового, а просто для этого?
Я знаю, что я могу запустить процесс с кодом Process.Start()
.
Можно ли также подключить отладчик к этому процессу?
Не из кода как такового, а просто для этого?
Вы можете прикрепить к запущенному процессу с помощью Tools | Attach to Process
. Если это веб-приложение, вы можете подключиться к нему, присоединившись к aspnet_wp.exe
или w3wp.exe
.
Чтобы ответить на ваш вопрос о том, как программно присоединить к процессу:
Вот еще вопросы о переполнении стека, которые касаются этого:
В визуальной студии нажмите Инструменты | Присоединитесь к процессу. Затем выберите соответствующий сервис.
Вы можете сделать это практически в любом отладчике, заслуживающем его соли.
Visual Studio имеет тот, который должен соответствовать вашим потребностям.
Если вам нужно немного более совершенное управление, попробуйте OllyDbg, который является дизассемблером, поэтому вы можете фактически манипулировать своей программой при помощи уровень сборки. Это даст вам полный контроль, но это может быть и перегрузка информации.
В Visual Studio 2015 нажмите "Отладка" > "Прикрепить к процессу" в меню. Кроме того, имеется комбинация клавиш Ctrl + Alt + P.
Вы можете сделать это в своем коде.
public static void Attach(DTE2 dte)
{
var processes = dte.Debugger.LocalProcesses;
foreach (var proc in processes.Cast<EnvDTE.Process>().Where(proc => proc.Name.IndexOf("YourProcess.exe") != -1))
proc.Attach();
}
internal static DTE2 GetCurrent()
{
var dte2 = (DTE2)Marshal.GetActiveObject("VisualStudio.DTE.12.0"); // For VisualStudio 2013
return dte2;
}
Использование:
Attach(GetCurrent());