Когда дочерний процесс достигает DebugBreak(true), как показано ниже:
[Conditional("ATTACH_DEBUGGER")]
public static void DebugBreak(bool condition)
{
if (condition)
{
if (!System.Diagnostics.Debugger.IsAttached)
{
System.Diagnostics.Debugger.Launch();
System.Diagnostics.Debugger.Break();
}
}
}
Мне будет предложено запустить новый экземпляр VS2022 для его отладки:

Однако я хочу отладить его в существующем экземпляре VS, если я уже отлаживаю родительский процесс.< /p>
Возможно ли такое вообще? Есть ли какой-либо параметр конфигурации VS, который мне может не хватать?
Текущий обходной путь: подключение вручную, переводя дочерний процесс в состояние ожидания с помощью WaitForDebugger() ниже :
[Conditional("ATTACH_DEBUGGER")]
public static void WaitForDebugger()
{
using var process = Process.GetCurrentProcess();
Console.WriteLine($"Waiting for debugger, process: {process.ProcessName}, id: {process.Id}, Assembly: {Assembly.GetExecutingAssembly().Location}");
while (!System.Diagnostics.Debugger.IsAttached)
{
// hit Esc to continue without debugger
if (Console.KeyAvailable && Console.ReadKey(intercept: true).KeyChar == 27)
{
break;
}
Thread.Sleep(TimeSpan.FromSeconds(1));
Console.Beep(frequency: 1000, duration: 50);
}
}
Подробнее здесь: https://stackoverflow.com/questions/720 ... nstance-of
Мобильная версия