2009-02-27 12 views
6

Jestem programistą pracującym nad Visual C++, ale w moim projekcie są pewne komponenty Delphi. Muszę debugować składniki Delphi, aby naprawić niektóre problemy.Jak debugować plik DLL w Delphi

Jakie są rzeczy, które należy wygenerować plik DLL w debugowaniu, a następnie rozpocząć debugowanie w Delphi?

Odpowiedz

20

W Delphi 7 można to zrobić:

Projekt | Opcje | Kompilator | Debugowanie | Informacje o debugowaniu (sprawdź)

Następnie przejdź do Uruchom | Parametry | Host Application i wprowadź nazwę swojego exe.

Dodaj punkty przerwania w kodzie DLL, a następnie kliknij przycisk Uruchom. Twój exe zostanie załadowany i będziesz mógł debugować części DLL w IDE Delphi.

Jeśli twój exe już działa, kliknij Uruchom | Dołącz do procesu

- Przetestowałem to i okazało się, że muszę również zaznaczyć opcję „Włącz zdalne symbole debugowania” na stronie Linker opcji projektu w Delphi 7.

udało mi się dostać Punkt przerwania do trafienia za pomocą Run | Parametry, a także Run | Dołącz do metod przetwarzania. Utworzona przeze mnie biblioteka testowa miała jedną funkcję stdcall i została dynamicznie załadowana przez aplikację konsoli Visual C++.

+0

@ Kaplica. Czy na pewno dołączenie do procesu może być użyte do debugowania biblioteki DLL? –

+0

Zrobiłem to samo, ale punkt przełomowy nie jest trafiony. Myślę, że dopasowanie między kodem i debuggerem nie ustanawia. Nie będzie tam koncepcji PDB (obecny w vc 6) będzie tam. – coolcake

+1

Zdalne symbole debugowania nie powinny być potrzebne – dummzeuch

4

Używamy tego dość często (używając Delphi).

Koniecznie:

  1. Włącz wszystkie opcje debugowania wszystkich projektów (plik DLL (s)). I wyłącz optymalizację.
  2. Pamiętaj, aby ustawić aplikację hosta w odpowiednim pliku EXE.
  3. Zbuduj plik (i) DLL.

Możesz teraz umieszczać punkty przerwania zarówno w bibliotece dll jak i exe. I uruchom plik DLL z IDE. Uruchamia plik EXE i zatrzymuje się w żądanych punktach przerwania.

Działa nawet wtedy, gdy pliki DLL są dynamicznie połączone (jeśli są rozładowane, niebieskie kropki znikają).

0

Metoda, którą zaproponował Gamecat, jest czymś, z czego wcześniej korzystałem.

Innym sposobem jest: Mam projekt DLL, ale robię również projekt "test bench". Projekt "stanowiska testowego" ma jedną formę, która może bezpośrednio wykonywać kod, który normalnie byłby używany w bibliotece DLL.