2009-11-02 12 views
6

Interesuje mnie, jakie użyteczne rzeczy deweloperzy umieszczają w strukturze danych strumienia użytkownika, która może być osadzona w minizrzadach. MSDN opisuje parametr MiniDumpWriteDump jako takie:Przydatne rzeczy do umieszczenia w segmencie strumienia minidumpów użytkownika

PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam

i opisuje parametr wygląda następująco:

UserStreamParam [in] wskaźnik do tablicy struktur MINIDUMP_USER_STREAM_INFORMATION. Jeśli wartość tego parametru wynosi NULL, żadne informacje zdefiniowane przez użytkownika nie są zawarte w pliku minizrzutu.

I rozważa umieszczenie ostatnie n wiersze dziennika mojego programu w strumieniu użytkownika od testerów zwykle nie wysyłają poprawnie sformatowane logi ze wszystkich błędów cały czas.

Mogę również umieścić specyfikacje sprzętu (pamięć, procesor, wideo itp.) W tej sekcji.

Do czego jeszcze użytkownicy wykorzystali segment strumienia użytkownika?

+0

Wydaje mi się, że to mniej dotyczy "tego, co możemy włożyć w to" i więcej "tego, co jest rzeczywiście potrzebne do debugowania mojego programu?" –

+0

Następnie zgadzasz się, że jest to pytanie przyszłościowe. Zapewniając maksymalne informacje diagnostyczne, można debugować przypadki, które można napotkać w przyszłości. Stąd pytanie. :) Należy pamiętać, że zrzuty debugowania są generowane przez strony trzecie, w tym klientów. Zrozumienie jak najwięcej o środowisku aplikacji podczas awarii może być niezbędne do śledzenia problemu. –

Odpowiedz

3

Podoba mi się twój pomysł włączenia informacji historycznych dziennika. Jednak jeśli minizrzek jest tworzony w odpowiedzi na wyjątek pewnego typu, wydaje się, że zatrzymanie odczytu pliku dziennika w celu uwzględnienia w zrzucie może nie zawsze być najlepszym planem, ponieważ stabilność systemu może być wątpliwa.

Nasz domyślny typ to MiniDumpWithFullMemory. W takim przypadku informacje o strumieniu użytkownika nie wydają się szczególnie przydatne w naszej aplikacji, ponieważ pełna pamięć zawiera prawie wszystkie możliwe informacje, których potrzebujemy (przynajmniej do tej pory). Mieliśmy również szczęście, że udało nam się uzyskać wszystkie pliki dziennika błędów, gdy ludzie wysyłają nam plik zrzutu.

Jednak nasi użytkownicy mogą zmienić typ za pomocą parametru konfiguracyjnego. Widzę, że przy jednym z mniejszych typów minidumpów informacje o strumieniu użytkownika mogą być bardzo przydatne. Nigdy nie zastanawiałem się nad tym parametrem funkcji minidump, dopóki nie zobaczyłem tego postu. Mamy kilka struktur w pamięci z podstawowymi informacjami konfiguracyjnymi, które byłyby nieocenione w przypadku, gdy nie zostanie utworzony pełny zrzut pamięci. Również struktura zawierająca szczegóły użytkownika, który "spowodował" wyjątek, byłaby przydatna. Będę musiał rozważyć dodanie kilku z nich do wyrzucenia jako strumienie użytkowników.

1

To, co może być bardziej użyteczne niż wypełnianie dodatkowych informacji tutaj, to włączenie plików dziennika generowanych przy pomocy WerRegisterFile.

1

Biblioteka Breakpad używa strumieni użytkownika dla niektórych bookkeeping information. Zawiera strumień z identyfikatorem wątku dedykowanego wątku, który wykonuje zapis minidump, dzięki czemu można go wyłączyć ze śledzenia stosu. Zawiera również strumień z informacjami o asercji, jeśli zrzut został zapisany w odpowiedzi na niezwracający się od zera komunikat zwrotny, taki jak nieprawidłowy moduł obsługi CRT lub czysty wirtualny moduł obsługi wywołania.

Powiązane problemy