Aggiungere contrassegni utente alla sequenza temporale di profilatura (C#, C++)
I contrassegni utente consentono di tenere traccia degli eventi personalizzati rispetto agli strumenti di profilatura di Visual Studio aggiungendo funzioni di contrassegno utente nel codice. Gli indicatori utente vengono visualizzati come segni visivi nei grafici della sequenza temporale. È possibile eseguire questa operazione per tenere traccia di un singolo evento o tenere traccia di un intervallo. Ad esempio, è possibile tenere traccia di un intervallo di eventi "stop" e "start".
Nota
Questa funzionalità richiede Visual Studio 2022 versione 17.11 Preview 3. La funzionalità è disponibile nel Profiler prestazioni e non durante il debug nell'hub di diagnostica.
Installazione e configurazione
È possibile installare il supporto per la funzionalità usando il pacchetto NuGet o aggiungendo i file di origine corretti.
Eseguire l'installazione con il pacchetto NuGet (C#)
Scaricare il pacchetto Microsoft.VisualStudio.DiagnosticsHub.UserMarks.
Installare aggiungendo file di origine (C#, C++)
Dopo aver installato Visual Studio, aprire la cartella seguente: [percorso di installazione di Visual Studio]\Common7\IDE\CommonExtensions\Platform\DiagnosticsHub.
Per il codice C#, aggiungere UserMarks.cs e UserMarksRange.cs al progetto.
Per il codice C++ nativo, aggiungere UserMarks.h al progetto.
Aggiungere contrassegni utente (C#)
Aggiungere la definizione del preprocessore seguente alla configurazione della compilazione del progetto: DIAGHUB_ENABLE_TRACE_SYSTEM
.
Per aggiungere la definizione in Visual Studio:
Fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e quindi scegliere Proprietà.
Selezionare Compila > simboli di compilazione condizionale generale>.
Nei campi dei simboli personalizzati per le compilazioni di debug e rilascio aggiungere
DIAGHUB_ENABLE_TRACE_SYSTEM
come definizione del preprocessore.
Aggiungere l'oggetto contrassegna e generare l'oggetto . Il codice seguente mostra un esempio di aggiunta di contrassegni utente.
using Microsoft.DiagnosticsHub;
// Create a user mark
var myUserMark = new UserMarks("MyMark");
// Emit the usermark
myUserMark.Emit("Event happened!");
// Emit statically
UserMarks.EmitMessage("Emitting just a message");
// Emitting a range
using (var myRange = new UserMarkRange("MyMethodRange"))
{
// Your code here
}
Aggiungere contrassegni utente (C++)
Per usare l'API contrassegni utente nativa, aggiungere UserMarks.h al progetto e aggiungere il codice seguente nell'app:
#define DIAGHUB_ENABLE_TRACE_SYSTEM
#include "UserMarks.h"
DIAGHUB_DECLARE_TRACE;
// Start the trace system
DIAGHUB_START_TRACE_SYSTEM();
// Initialize user marks
USERMARKS_INITIALIZE(L"User mark name");
// Initialize user mark range
USERMARKRANGE_INITIALIZE(L"Range name");
// Emit events
USERMARKS_EMIT(L"Message to emit with user mark");
USERMARKRANGE_START(L"Message to emit with range");
USERMARKRANGE_END();
// Stop the trace system
DIAGHUB_STOP_TRACE_SYSTEM();
Visualizzare i contrassegni utente
Con il progetto aperto in Visual Studio, aprire Il profiler prestazioni (ALT+F2), quindi selezionare uno strumento e selezionare il pulsante Start .
Assicurarsi che il codice dell'utente aggiunto all'app venga eseguito.
I contrassegni utente vengono visualizzati sul righello sopra il grafico della sequenza temporale e in una tabella con dettagli sui timestamp, sul processo correlato e sui messaggi generati.
Nella sequenza temporale il contrassegno utente viene visualizzato come triangolo invertito.
Nel riquadro Riepilogo selezionare Mostra contrassegni utente per visualizzare i dettagli sui contrassegni utente.
I dettagli vengono visualizzati nella scheda Contrassegni utente.
Per visualizzare i dettagli del contrassegno dell'utente nella sequenza temporale, passare il puntatore del mouse sui segni nel righello.
Per filtrare la visualizzazione dei dettagli, selezionare un intervallo di tempo nel grafico della sequenza temporale oppure fare clic con il pulsante destro del mouse su una riga e selezionare ora di inizio e fine per filtrare il grafico della sequenza temporale.
È anche possibile filtrare la visualizzazione impostando intervalli su intervalli o selezionando più contrassegni utente.