Dziś będzie o jeszcze jednym typie breakpointu. Kiedy może się on przydać zobaczmy na przykładzie.

Automatycznie właściwości

Wszyscy kochamy automatyczne właściwości, oszczędzają one nam czas i redukują ilość kodu jaki musimy napisać. Jedyną (?) ich wadą jest niemożliwość ich debuggowania. Często, tego nie potrzebujemy, ale czasem przydaje się możliwość ustawienia breakpoint’a na set lub get i np. podejrzenie call stack’a. Zwykłe postawienie w tym miejscu pułapki skutkuje następującym stanem. W Visual Studio widzimy breakpoint jednakże gdy tylko uruchomimy aplikację nasza pułapka znika.


Miejmy poniższy kod:

Code Snippet
  1. namespace ConsoleApplication2
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             new Program().SetMe = “I’m setting u”;
  8.         }
  9.  
  10.         public string SetMe { get; set; }
  11.     }
  12. }

Aby postawić pułapkę na takiej właściwości skorzystajmy z okna New Breakpoint (CTRL+B). To co nam się ukaże to okno tworzenia pułapki.

Dodawanie breakpointa

W polu Function skasujmy to co jest wpisane i zamiast tego dajmy: ConsoleApplication2.Program.set_SetMe (pełna nazwa nie jest wymagana jeśli nazwa identyfikuje nam obiekt jednoznacznie – inaczej podepniemy się do wszystkich takich właściwości). Upewnijmy się, że mamy odznaczone pole ‘Use IntelliSense…’ – inaczej dostaniemy komunikat o braku potwierdzenia.

Teraz jak uruchomimy naszą aplikację – zatrzyma się ona w momencie wywołania settera. Na pasku bocznym nie zobaczymy jednak oznaczenia ustawionej pułapki (tu może się przydać info z poprzedniego posta – Dźwiękowy breakpoint) jednakże będziemy mogli podejrzeć call stack, czy w oknie Watch podejrzeć wartość obiektu value. Oczywiście taka pułapka jest wylistowana w oknie Breakpoints i możemy robić z nią standardowe modyfikacje typu: warunkowy breakpoint, hit count, etc.

Podobne zabawy można robić z podpinaniem się pod event’y z tym wyjątkiem, że tam będą metody zaczynające się od add i remove.