2014-11-04 12 views
5

Mam obiekt System.Collections.Generic.Dictionary w moim kodzie i próbuję wyświetlić jego zawartość, gdy zatrzymał się w punkcie przerwania w debugerze Visual Studio. Klasa Dictionary w .NET zawiera oczywiście listę kluczy i wartości.Nie można wyświetlić zawartości słownika w debugerze Visual Studio

Jeśli kliknę prawym przyciskiem myszy załadowany obiekt i spróbuję przejść do jego zawartości, wydaje mi się, że dostaję się w nieskończoną pętlę. Na przykład, jeśli próbuję zobaczyć zawarte klucze, rozwijam element Keys, który pokazuje mi liczbę i inną kolekcję o nazwie "Non-Public members". Rozszerzam tę ostatnią i otrzymuję kolejny obiekt słownika, który ma element Keys, który mogę rozwinąć, aby uzyskać kolejną instancję "count" i "Non-Public members", które mogę rozwinąć itp., Itp .:

Dictionary expansion in Visual Studio debugger

Korzystanie z funkcji QuickWatch daje ten sam wynik, więc jak faktycznie wyświetlić klawisze znajdujące się w obiekcie?

+0

Czy masz minimalny przykład kodu, który generuje ten błąd? Przeglądanie słownika działa dobrze dla mnie w VS2010 przy użyciu słownika, do którego dodaję kilka elementów. Na podstawie opublikowanego zrzutu ekranu nic nie zostało dodane do dctLoadedRows. Ponadto kliknięcie prawym przyciskiem myszy zwykle powoduje wyświetlenie menu kontekstowego i nie pozwala na drążenie niczego. – iheanyi

+0

@iheanyi - Obraz jest rzeczywistym zrzutem ekranu (z kodem po lewej stronie rozwinięcia obciętym). Debugger zatrzymany jest na jednym z wierszy kodu. W Visual Studio można rozwinąć obiekt z dowolnego odwołania w kodzie, o ile obiekt nadal znajduje się w zakresie. To jest VS 2010. W tym przypadku jest to zadanie skryptowe w SSIS. Klikając prawym przyciskiem myszy obiekt wyświetlił okno dialogowe z przyciskiem ekspansji po lewej stronie "dctLoadedRows Count = 17", jak widać, jeśli spojrzysz na górną linię rozszerzenia. – Buggieboy

+1

Inni doświadczyli tego debugowania usług Silverlight i WCF w VS2010. Czy możesz być w tej sytuacji, czy jest to "zwykła" aplikacja VS ?: https://social.msdn.microsoft.com/Forums/vstudio/en-US/8c8d5f10-502c-43f5-a2ba-c1c0acfb8315/visual-studio -2010-c-can-drill-down-to-collect-and-see-data? Forum = vsdebug – iheanyi

Odpowiedz

2

Wiem, że ten problem został rozwiązany w późniejszych wersjach Visual Studio. Jednak dla niektórych z nas, którzy utknęli w starszej wersji VS, można szybko sprawdzić klucze słownika.

Załóżmy, że mamy słownik o nazwie "dict". Potrzebujemy kluczy, aby zobaczyć wartości. w oknie zegarka tak to zrobić:

dict.Keys.ToList()

który pozwoli Ci drążyć na listę i zobaczyć klucze.

Jeśli znasz indeks klucza chcesz wykonać następujące czynności:

dict.Keys.ToList()[1]

ten wyświetli klucz o indeksie 1.

Teraz można wziąć ten klucz i zobaczyć co jest wartością z:

dict[dict.Keys.ToList()[1]]

oczywiście można zastąpić indeks do kluczy listę z rzeczywistą wartością klucza w innej linii zegarka, jeśli jest to łatwiejsze.

EDIT: Ponadto, możliwe jest również, aby zobaczyć wpisy słownika z następujących czynności w oknie Watch:

„dict.entries”

To daje listę wpisów przejrzec. Każdy wpis będzie miał właściwość "klucz" i "wartość".

Powiązane problemy