Równoległe narzędzia diagnostyczne (współbieżności Runtime)
Visual Studiozapewnia zaawansowaną obsługę debugowania i profilowanie aplikacji wielowątkowych.
Debugowanie
Visual Studio debugger zawiera Równolegle stosy okna, Zadania równolegle okna, i Watch równoległych okna.Aby uzyskać więcej informacji, zobacz Instruktaż: Debugowanie aplikacji równoległe i Jak: równoległy okno czujki.
Profilowanie
Narzędzia profilowania zapewniają wyświetlanie graficznego, tabelarycznych i liczbowe informacji na temat współdziałania ze sobą i z innych programów wielowątkowych aplikacji trzech widoków danych.Widoki pozwalają szybko zidentyfikować obszary zainteresowania i przejść od punktów graficzny Wyświetla wywołać stosy, wywołanie witryn i kod źródłowy.Aby uzyskać więcej informacji, zobacz Podglądacza współbieżności.
Śledzenie zdarzeń
Używa Runtime współbieżności Śledzenia zdarzeń dla systemu Windows (ETW) powiadamia narzędzi Instrumentacji, takich jak użyciu narzędzi do profilowania, gdy występują różne zdarzenia.Zdarzenia te obejmują harmonogram jest aktywowany lub Dezaktywowany kontekst rozpoczyna, kończy się, blokuje, odblokowuje lub plonów i algorytmu równoległego rozpoczyna lub kończy.
Narzędzia takie jak Podglądacza współbieżności korzystać z tej funkcji; dlatego zazwyczaj nie trzeba pracować bezpośrednio z tych zdarzeń.Jednak te zdarzenia są przydatne podczas opracowywania niestandardowych profiler lub kiedy używać narzędzia Śledzenie zdarzeń takich jak Xperf.
Runtime współbieżności wzbudzi tych zdarzeń tylko wtedy, gdy włączone jest śledzenie.Wywołanie concurrency::EnableTracing funkcji, aby włączyć śledzenie zdarzeń i concurrency::DisableTracing funkcji wyłączyć śledzenie.
W poniższej tabeli opisano zdarzenia, które podnosi wykonawczym po włączeniu śledzenia zdarzeń:
Zdarzenie |
Opis |
Wartość |
---|---|---|
Identyfikator dostawcy ETW Runtime współbieżności. |
f7b697a3-4db5-4d3b-be71-c4d284e6592f |
|
Znaczniki zdarzeń związanych z kontekstów. |
5727a00f-50be-4519-8256-f7699871fecb |
|
Znaki na wejściu i wyjściu do wywołania concurrency::parallel_for algorytm. |
31c8da6b-6165-4042-8b92-949e315f4d84 |
|
Znaki na wejściu i wyjściu do wywołania concurrency::parallel_for_each algorytm. |
5cb7d785-9d66-465d-bae1-4611061b5434 |
|
Znaki na wejściu i wyjściu do wywołania concurrency::parallel_invoke algorytm. |
d1b5b133-ec3d-49f4-98a3-464d1a9e4682 |
|
Znaki zdarzenia, które są powiązane z Harmonogramu zadań. |
e2091f8a-1e0a-4731-84a2-0dd57c8a5261 |
|
Znaczniki zdarzeń związanych z procesorów wirtualnych. |
2f27805f-1676-4ecc-96fa-7eb09d44302f |
Runtime współbieżności definiuje, ale nie aktualnie podnieść, następujące zdarzenia.Środowisko wykonawcze rezerwy te zdarzenia, do wykorzystania w przyszłości:
Concurrency::ConcRT_EventType wyliczenie określa możliwe operacje, które śledzi zdarzenia.Na przykład na wejście do parallel_for algorytmu, runtime podnosi PPLParallelForEventGuid zdarzeń i zapewnia CONCRT_EVENT_START jako operacja.Przed parallel_for zwraca algorytmu, runtime ponownie wywołuje PPLParallelForEventGuid zdarzeń i zapewnia CONCRT_EVENT_END jako operacja.
Poniższy przykład ilustruje sposób włączania śledzenia dla wywołania do parallel_for.Środowisko wykonawcze nie śledzenia pierwsze wywołanie parallel_for , ponieważ to nie jest włączone śledzenie.Wywołanie EnableTracing umożliwia runtime do śledzenia, drugie wywołanie parallel_for.
// etw.cpp
// compile with: /EHsc
#include <ppl.h>
using namespace concurrency;
int wmain()
{
// Perform some parallel work.
// Event tracing is disabled at this point.
parallel_for(0, 10000, [](int i) {
// TODO: Perform work.
});
// Enable tracing for a second call to parallel_for.
EnableTracing();
parallel_for(0, 10000, [](int i) {
// TODO: Perform work.
});
DisableTracing();
}
Środowisko wykonawcze śledzi liczbę razy, które można wywoływać EnableTracing i DisableTracing.Dlatego jeśli EnableTracing wiele razy, należy wywołać DisableTracing taką samą liczbę razy, aby wyłączyć śledzenie.