Coding with Titans

so breaking things happens constantly, but never on purpose

Prywatne Repozytorium plików PDB

Mało kto zdaje sobie tak naprawdę sprawę, że oprócz wersjonowania kodu oraz oficjalnych/inżynierskich releasów wysyłanych do klientów wypada również wersjonować pliki PDB z nimi związane. Dlaczego? Odpowiedź jest bardzo prosta. Wyobraźmy sobie, iż nasza aplikacja się po prostu wysypuje. Zaraz ktoś mi powie – “hola hola, ale przecież mamy logi, w pięknym tekstowym formacie i wszystko w nich widać”. Może ktoś nawet słyszał o plikach MAP :) Super! No ale nie wszystkie nasze moduły muszą być przecież napisane w . Read more →

Czy ktoś debuguje moją aplikację?

Z różnych powodów, czasem nie chcemy, aby ktoś przyglądał się naszej aplikacji w trakcie jej działania. Pomińmy jednak na chwilę te powody i skupmy się na samym wykrywaniu debuggera… Najprostszą metodą sprawdzenia w systemie Windows, czy nasza aplikacja jest aktualnie uruchomiona w jego kontekście lub jest on podłączony można wykonać poprzez wywołanie funkcji: IsDebuggerPresent() z WinAPI. Jednakże sprytny debugger może ją przesłonić i zawsze zwracać, że nie. Informację tę zatem wyciągniemy samemu, “ręcznie” z bloku informacji o wątku (Thread Information Block – TIB). Read more →

Debugowanie Aplikacji Microsoft Windows

Na 10.-tym spotkaniu grupy PLSSUG 23.lipca wydarzyła się rzecz niespotykana. Udało mi się przed grupą zapaleńców i administratorów baz danych (MS SQL 2005+) zaprezentować temat czysto .NET-owy. Odbiło się to nieco na końcowych ocenach, gdzie grupę administratorów zanudziłem na śmierć i uśpiłem na prawie 2h, a grupę programistów doprowadziłem do ekstazy i niemałych braw. Wystąpienie przedłużyło się prawie dwukrotnie, ale mimo to nikt nie zauważył nawałnicy, która tego dnia przetoczyła się przez Wrocław. Read more →

Formatowanie wyrażeń w oknie Watch w Visual Studio

Debugowanie i podglądanie wartości zmiennych w oknie Watch, często byłoby dużo wygodniejsze, gdyby dane można rzutować na inne typy oraz poddawać je innym manipulacjom. Na szczęście prócz wymuszenia zmiany typów, okno to posiada wbudowany zestaw predefinowanych formatów, które mogą pobierać dane ze znanych typów wyliczeniowych (Windows Messages lub Code Errors) lub po prostu odczytywać napisy ANSI / UTF-16, bądź traktować dane jako tablice o zadanej wielkości, podając wartości wszystkich elementów. Wpisujemy je po przecinku na końcu wyrażenia, np. Read more →