Rzut oka na Studio
- Tomasz Kopacz,
- 04.11.2002
Zmiany w debuggerze
W kolejnych wersjach narzędzi Microsoftu coraz bardziej są rozbudowywane możliwości debuggera. Ciekawym pomysłem jest wprowadzenie serwera z informacjami dla debuggera (symbolami, nazwami funkcji i ewentualnie z kodem źródłowym). W środowisku IDE można wskazać taki serwer, z którego będą pobierane wszystkie informacje związane ze śledzeniem aplikacji. Jest to idealne rozwiązanie przy większych projektach - poszczególne podzespoły automatycznie uzyskują dostęp do modułów tworzonych przez innych programistów. Serwer może być zdefiniowany lokalnie, ale co najciekawsze, dostępny jest także serwer Microsoftu (http://msdl.microsoft.com/download/symbols), na którym znajdują się wszystkie symbole dotyczące Windows NT 4.0/2000/XP, MDAC, IIS, ISA i innych serwerów .Net. W przyszłości mają być tam także dostępne symbole do śledzenia samego .Net Framework.
Przy śledzeniu zdalnym aplikacji można wykorzystać bezpieczniejszy niż TCP/IP mechanizm nazwanych potoków. Zablokowany został mechanizm JIT w przypadku, gdy miałoby nastąpić odwołanie pomiędzy zdalnie połączonymi komputerami. W wyrażeniach związanych z pułapkami i w oknie podglądu zmiennych można skorzystać ze specjalnego słowa kluczowego zawierającego informacje o wyjątku (na razie mechanizm ten działa tylko w C#).
Aplikacja może automatycznie śledzić krok po kroku usługi Web wywoływane z innych programów. Działa także wtedy, jeżeli z programu A jest wywoływana usługa B, która korzysta z jeszcze innej usługi Web C. Dotyczy to wyłącznie usług Web napisanych w .Net.
Jeżeli w aplikacji napisanej w Visual C++ występuje nie obsługiwany błąd, może być zapisany tzw. zrzut pamięci i stanu systemu. Takie zrzuty generuje np. Doctor Watson, UserDump czy Autodump+ z Microsoft Debugging Tools. VC++ 2003 potrafi wczytać taki plik i odtworzyć stan aplikacji. W ten sposób następuje automatyczny przekaz informacji o błędach w programie od użytkownika końcowego do developera (podobny mechanizm jest dostępny w Windows XP i pozwala po kilku kliknięciach myszą przesyłać informacje o błędach w programach Microsoftu). W debuggerze VC++ można "zamrozić" stan komputera, a po pewnym czasie wczytać go i wznowić śledzenie. Bardzo uprości to pracę, gdy trzeba wielokrotnie powtarzać testy, zmieniając np. stan innych usług systemowych.
W kodzie zarządalnym .Net analogiczną rolę pełni mechanizm SOS. Można także wczytywać zapisaną informację ze zrzutem pamięci (tym razem w aplikacji zarządzalnej).
Mieszanie kodu na życzenie
Z VS.Net 2003 programista otrzymuje pakiet Dotfuscator Community Edition. Jest to specjalny postprocesor, który analizuje kod MSIL, a następnie zmienia go tak, by po deasemblacji był mniej przejrzysty. Oczywiście nie powoduje to żadnych zmian w działaniu programu.W językach opartych na bytecode (zarówno Java, jak i .Net MSIL Microsoft) znacznie więcej można odczytać z deasemblacji, niż np. w przypadku kodu Win32. Na marginesie warto dodać, że istnieje też wersja Dotfuscator Pro, która znacznie bardziej "gmatwa" kod. Na przykład Dotfuscator zmienia nazwy obiektów i zmiennych widocznych w kodzie MSIL, koduje łańcuchy znaków, eliminuje niepotrzebne metainformacje. W wersji Pro usuwa zbędne fragmenty kodu. Jest to bardzo pożyteczne narzędzie, tym bardziej że działa niezależnie od kodu źródłowego.
Przebudowane C++
C++ w VS.Net 2003 zyskało nowe możliwości. Rozszerzono funkcjonalność tzw. managed extension - dodatkowych atrybutów, które pozwalają definiować w C++ fragmenty kodu zgodne z .Net.