2009-02-19 15 views
8

Próbuję użyć WinDBG lub innego debuggera do debugowania aplikacji Windows CodeGear Delphi 2007 na zdalnym komputerze. Nie byłem w stanie tworzyć plików symboli dla WinDBG.Debugowanie aplikacji Delphi w środowisku nie deweloperskim

Czy istnieje sposób użycia WinDBG lub innego debuggera do debugowania aplikacji Delphi w systemie, który nie zawiera IDE?

Edit1

zdalny debugger nie jest opcją tutaj. Mogę zdalnie zalogować się na komputer użytkownika końcowego, ale nie mogę używać zdalnego debuggera z powodu ograniczeń zapory firewall.

Edit2

jestem w stanie zdalny do komputera, ale nie można nawiązać połączenia zdalnego debugera CodeGear powodu ograniczeń zapory.

Odpowiedz

0

Dziękuję wszystkim za wspaniałe sugestie i ciekawe produkty.

Aby rozwiązać ten konkretny problem, „najlepszy” sposób znalazłem używa OutputDebugString znajdujący się w nazw Windows. To, wraz z Debug View from Sysinternals, pozwoli mi szybko zebrać informacje na temat debugowania i posortować je.

Jeśli zdecydujesz się użyć tej metody, upewnij się, że wszystko jest zapakowane w formatowanie ANSI. IE:

OutputDebugString(PAnsiChar(string1 + string2)); 

Zapewnia to połączenie ciągów1 i ciągów2, a następnie ich konwersję na znaki ANSI.

Prawdopodobnie powinienem był właśnie rozpocząć składowanie tekstu do pliku na coś szybkiego i brudnego, ale pozwoli to na debugowanie wiadomości w wersji bez debugowania.

+0

Chcę pozostawić to pytanie otwarte jeszcze przez kilka dni, aby sprawdzić, czy nie możemy uzyskać lepszej odpowiedzi niż ta, aby rzeczywiście podłączyć debugger. –

5

Co powiesz na zdalny debugger? Zbuduj swoją aplikację za pomocą zdalnych symboli debugowania i debuguj z komputera programistycznego w całej sieci.

+0

chciałbym być w stanie to zrobić, ale niestety druga maszyna znajduje się na zupełnie innej sieci z ograniczeniami zapory. –

+0

Udało mi się zdalnie podłączyć do komputera, ale nie mogę połączyć zdalnego debuggera przez TCP \ IP. Szukałem czegoś podobnego do WinDBG, aby rozwiązać problem z aplikacją przez GUI, ponieważ nie mogę bezpośrednio połączyć się z debuggerem. –

+0

Jeśli nie możesz połączyć się zdalnie, to lubię pomysł X-Ray. skały madExcept. –

1

W Delphi możesz użyć Run -> Attach to Process, wybrać zdalny komputer i wybrać proces, który chcesz debugować.

+0

... asuming komputera docelowego uruchamia zdalny debugger. – dummzeuch

+0

Nigdy nie używałem tej "procedury", więc nie pomyślałem o tym. Jeśli chodzi o ustawienie go prosto, przynajmniej "ja" nauczyłem się czegoś. –

5

Zamiast tego polegam na śledzeniu stosu MadExcept i niektórych funkcjach rejestrowania. moja aplikacja jest rozpowszechniana na całym świecie pod numerem &.

+0

Popatrzyłem na ten produkt trochę więcej i jestem pod wrażeniem tego, co potrafi! Niestety aplikacja nie ulega awarii. Potrzebuję sposobu, aby zrzucić pamięć lub przejść aplikację, aby złapać bardziej logiczny błąd. Dziękujemy za interesujący produkt! –

4

Można spróbować generowania pliku mapy, a następnie przekształcić go w pliku DBG wykorzystaniem map2dbg z http://code.google.com/p/map2dbg/

Następnie można załadować pliku DBG w WinDbg.

Zrzeczenie się: Miałem do czynienia z podobnym problemem, ale udało mi się zdalnie debugować i nie musiałem robić tego wszystkiego. Więc nie jestem pewien, czy to zadziała. Ale jeśli spróbujesz, daj nam znać, czy to działa.

+0

Spenetrowałem wczoraj dość wcześnie i odkryłem, że nie jest to jeszcze zgodne z Delphi. Jeśli masz więcej informacji na ten temat, byłoby to idealne. –

2

obawiam to jeden z tych „nie mam rzeczywista odpowiedź” odpowiedzi, ale potęga tylko pomóc ...

Czy za dodanie logowania do aplikacji? Słyszałem świetne rzeczy o SmartInspect. Dzięki niej można rejestrować wszystkie rodzaje informacji, w tym ślady stosu i "zegarki" (zmienne).

Kolejny rejestrowany produkt dla Delphi to EurekaLog.

+0

Mogę potwierdzić, że SmartInspect jest bardzo niezawodnym rozwiązaniem. Ok, nie można wyprostować debugowania, rejestracja jest bardzo dobra i zaawansowana. –

0

http://sourceforge.net/projects/tds2dbg/ może być użyty do konwersji plików debugujących Delphi TDS do plików DBG. Daje to podstawowe informacje o symbolu - funkcje, klasy, jednostki, ale nie zmienne. Wystarczy na rozsądny stos wywołań i przy odrobinie wiedzy, wystarczy debugowanie aplikacji Delphi na żywo i ze zrzutami.

Pisałem o niektórych Delphi + WinDBG doświadczeń na moim blogu: https://marc.durdin.net/2015/11/windbg-and-delphi-a-collection-of-posts/

Powiązane problemy