2012-06-22 16 views
6

Sé que puedo encontrar si un proceso se depura mediante una llamada a Debugger.IsAttached en .NET, pero me gustaría poder obtener el PID del Visual Studio es la depuración de los procesos. es posible?Encontrar el pid de Visual Studio que está depurando mi proceso

+3

Si el proceso se inicia desde el depurador, el depurador pid será el pid padre del proceso depurado y esto puede determinarse. ¿Está más interesado en el escenario donde el depurador está conectado de forma remota a un proceso activo? – panickal

+1

Hay varios casos donde VS es * no * el proceso de depuración. Como depuración remota o depuración de código de 64 bits o varios escenarios de alojamiento. Es muy importante que no necesites información. Esta es una pregunta XY, no puedo ver la X. –

Respuesta

2

Puede usar el método TryGetVSInstance descrito en this answer para obtener una bodega de cada instancia del objeto EnvDTE COM Automatización de Visual Studio. Una vez que tenga eso, simplemente itere la colección DTE.Debugger.DebuggedProcesses y compruebe si alguno de ellos apunta al mismo ID de proceso que el proceso que le interesa.

+0

Tenía la esperanza de que fueran una aplicación win32 a la que pudieras llamar, pero creo que tu sugerencia es probablemente la más limpia. ¡Gracias! – Robert

0

This funcionó para mí.

public static Process GetParent(Process process) 
{ 
    var processName = process.ProcessName; 
    var nbrOfProcessWithThisName = Process.GetProcessesByName(processName).Length; 
    for (var index = 0; index < nbrOfProcessWithThisName; index++) 
    { 
     var processIndexdName = index == 0 ? processName : processName + "#" + index; 
     var processId = new PerformanceCounter("Process", "ID Process", processIndexdName); 
     if ((int)processId.NextValue() == process.Id) 
     { 
      var parentId = new PerformanceCounter("Process", "Creating Process ID", processIndexdName); 
      return Process.GetProcessById((int)parentId.NextValue()); 
     } 
    } 
    return null; 
} 
Cuestiones relacionadas