Detektyw od kodu

SoftIce to chyba jedyny debuger, pozwalający w wygodny sposób obserwować, co dzieje się w systemie operacyjnym. Jego stosowanie nie jest ograniczone do jednego języka programowania.

SoftIce to chyba jedyny debuger, pozwalający w wygodny sposób obserwować, co dzieje się w systemie operacyjnym. Jego stosowanie nie jest ograniczone do jednego języka programowania.

SoftIce firmy NuMega, należącej do Compuware, umożliwia śledzenie działania aplikacji w systemach Windows NT, 95, 98, 2000, a także w DOS. W każdym środowisku programista otrzymuje ten sam zestaw narzędzi. Interfejs zaw-sze wygląda tak samo.

Śledczy w działaniu

W Windows 95/98 debuger jest wczytywany jeszcze przed systemem operacyjnym, co pozwala na dokładną analizę operacji wykonywanych w momencie startu systemu. W Windows NT i 2000 można zaś wybrać, czy debuger ma być uruchamiany w trakcie ładowania systemu, czy jako usługa sieciowa.

SoftIce przy śledzeniu aplikacji korzysta ze specjalnie przygotowanej informacji o kodzie źródłowym. W zależności od używanego narzędzia, należy skompilować w określony sposób program lub sterownik (w dokumentacji są podane przykładowe opcje dla Watcom C/C++, Borland C++/C++ Builder, Delphi, Symantec C++, Visual C++, MASM i innych kompilatorów, które mogą generować informację dla debugera zgodną z np. CodeView). Po skompilowaniu, przy użyciu specjalnego translatora można przetworzyć taką informację w plik, który SoftIce może wczytać.

SoftIce obsługuje też specjalny format plików SYM, zawierających m.in. informacje o kodzie źródłowym Windows. W ten sposób można nie tylko obserwować, jak pracuje program, ale także wykrywać, jakie elementy systemu operacyjnego powodują wadliwe działanie aplikacji.

Ponadto SoftIce może działać bez podanego kodu źródłowego. Wtedy jest to klasyczny deasembler, w którym można obserwować kolejne instrukcje procesora, a także zmieniać kod programu czy wręcz systemu operacyjnego.

Cechy unikalne

Tym, co stanowi o sile SoftIce, jest fakt, że debuger niemal w 90% automatycznie wykrywa czy dla aktualnie wykonywanego programu dysponuje informacją o źródłach i przykładowo przełącza się między asemblerem, C a Delphi. Dzięki temu jest idealnym narzędziem, które pozwala znajdować błędy w miejscach "styku" różnych modułów programu. Programista może normalnie pracować w Windows (SoftIce zużywa ok. 10-20% mocy procesora) i wywołać podgląd kodu, wówczas gdy coś go zaniepokoi.

SoftIce ma własne biblioteki obsługujące różne karty graficzne. Nie sprawia mu kłopotu śledzenie aplikacji wykorzystujących DirectX i niestandardowe tryby graficzne.

W debuger wbudowano bardzo wyrafinowany mechanizm tworzenia makr i tzw. warunkowych pułapek. W standardowych debugerach dołączanych do konkretnych narzędzi można tylko decydować, jaki warunek musi być spełniony, by program został przerwany. Zazwyczaj ten mechanizm bardzo spowalnia działanie komputera i niemal nikt z niego nie korzysta. SoftIce wykorzystuje wbudowane mechanizmy procesorów x86 i dzięki temu pułapki warunkowe niemal w ogóle nie spowalniają działania aplikacji. W przypadku gdy dana pułapka zostanie napotkana, zamiast przerywać pracę programu, będzie wykonane makro zapisujące w logu zawartość obszaru pamięci czy wygląd struktury C. Makra pozwalają także na automatyzację części operacji wykonywanych w debugerze, np. ustalenie odpowiedniego układu okien czy wręcz wykonanie pewnych sekwencji kodu w określonej kolejności.

Inny niż wszystkie

SoftIce można stosować w sytuacji, gdy konieczne jest znalezienie błędu w dużej aplikacji, której logika działa już niemal poprawnie. Debugery wbudowane w narzędzia dla programistów pozwalają łatwo nanosić zmiany w kodzie źródłowym. Niektóre nawet umożliwiają rekompilację kodu bez ponownego uruchamiania aplikacji. SoftIce pozwoli natomiast wykryć błędy wynikające z innego sposobu optymalizacji kodu bądź te, które powstają na styku programu i systemu operacyjnego.

W przypadku tworzenia sterowników SoftIce nie ma w zasadzie konkurencji. Debuger Microsoftu ułatwia pracę dzięki zastosowaniu dwóch komputerów. SoftIce może wykorzystać jeden komputer, skorzystać z karty monochromatycznej, włożonej do komputera, czy wysyłać dane do zdalnego terminala.

Jest on często uaktualniany, a modyfikacje są zwykle bezpłatne. Może obsługiwać architekturę SMP w konfiguracji do 8 procesorów.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200