So che posso trovare se un processo viene eseguito il debug tramite una chiamata a Debugger.IsAttached in .NET, ma mi piacerebbe essere in grado di ottenere il PID del Visual Studio che esegue il debug dei processi. È possibile?Trova il pid di Visual Studio che esegue il debug del mio processo
6
A
risposta
2
È possibile utilizzare il metodo TryGetVSInstance
descritto in this answer per ottenere una sospensione di ogni istanza dell'oggetto di automazione COM EnvDTE di Visual Studio. Una volta fatto, basta ripetere la raccolta DTE.Debugger.DebuggedProcesses e controllare se qualcuno di essi punta allo stesso processID del processo che ti interessa.
+0
Speravo che potessero essere una API win32 che potevi chiamare, ma penso che il tuo suggerimento sia probabilmente il modo più pulito. Grazie! – Robert
0
This ha funzionato per me.
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;
}
Problemi correlati
- 1. Trova PID del processo che utilizzano una porta su Windows
- 2. Visual Studio: esegue il debug di più progetti contemporaneamente?
- 3. Visual Studio dispone di privilegi insufficienti per eseguire il debug di questo processo. Per eseguire il debug di questo processo, Visual Studio deve essere eseguito come amministratore
- 4. Determinare il pid del processo terminato
- 5. Ottieni il nome del processo tramite PID
- 6. Strumenti di diagnostica Visual Studio: come modificare il processo selezionato?
- 7. Come arrestare Visual Studio che riorganizza Windows durante il debug
- 8. Visual Studio 2015 esegue il processo aapt.exe utilizza il 100% dell'uso della CPU
- 9. Visual Studio 2012 "Impossibile avviare il debug"
- 10. In che modo Visual Studio visualizza System.Double durante il debug?
- 11. Impossibile avviare il debug - Visual Studio 2012
- 12. Errore NUnit che esegue il mio codice C# Selenium WebDriver
- 13. visual studio: collega il debugger senza avviare il debug web
- 14. Come funziona il debug in Visual Studio?
- 15. Visual Studio esegue test con un processo meno privilegiato?
- 16. ottenendo pid del processo figlio
- 17. Ottieni il nome del processo da pid o handle
- 18. Come eseguire il debug di Visual Studio in 6423 bit
- 19. Allegare a un processo figlio automaticamente in Visual Studio durante il debug
- 20. Come si esegue il debug di progetti Visual Studio tramite VMware?
- 21. Debug di Visual Studio: voglio solo passare al mio programma!
- 22. Nunit non esegue il metodo SetUp in modalità di debug di Visual Studio
- 23. Come si esegue il debug di HTML e JavaScript insieme in VSCode (Codice di Visual Studio)?
- 24. Includere tutti i file durante il debug in Visual Studio?
- 25. Ottenere il PID del processo in Shell Script
- 26. Impossibile eseguire il debug del test utilizzando il punto di interruzione in Visual Studio 2013
- 27. pid del processo attualmente in esecuzione
- 28. il debug di un processo generato con CreateProcess in Visual Studio
- 29. Visual Studio che avvia il progetto sbagliato
- 30. Ottenere PID del processo che ha innescato qualche segnale
Se il processo viene avviato dal debugger, il pid del debugger sarà il pid padre del processo di debug e questo può essere determinato. Sei più interessato allo scenario in cui il debugger è collegato in remoto a un processo attivo. – panickal
Ci sono diversi casi in cui VS * non * è il processo del debugger. Come il debug remoto o il debug di codice a 64 bit o vari scenari di hosting. Piuttosto importante che tu non abbia bisogno di informazioni. Questa è una domanda XY, non riesco a vedere la X. –