Udostępnij za pośrednictwem


Debugowanie projektów DLL

Następujące szablony tworzą biblioteki DLL:

  • (C++, C#, i Visual Basic) Biblioteka klas

  • (C++, C#, i Visual Basic): Biblioteka formantów Windows Forms

    Debugowanie Biblioteki formantów systemu Windows jest podobne do debugowania projektu biblioteki klas.W większości przypadków formant systemu Windows będzie wywoływany z innego projektu.Podczas debugowania projektu wywołującego można wkroczyć do kodu kontrolki Windows, ustawić punkty przerwania i wykonywać inne operacje debugowania.Aby uzyskać więcej informacji, zobacz Formanty interfejsu Windows Forms.

  • (C# i Visual Basic): Biblioteka formantów sieci Web

    Aby uzyskać więcej informacji, zobacz Biblioteka formantów sieci Web (zarządzany kod).

  • (C++): formant ActiveX urządzeń inteligentnych MFC i formant ActiveX MFC

    Formanty ActiveX to formanty, które mogą zostać pobrane z Internetu na komputer kliencki, i wyświetlane oraz aktywowane na stronach sieci Web.

    Debugowanie formantów ActiveX jest podobne do debugowania innych rodzajów formantów, ponieważ nie mogą być one uruchamiane jako autonomiczne, lecz muszą być osadzone na stronie sieci Web w formacie HTML.Aby uzyskać więcej informacji, zobacz Porady: debugowanie formantu ActiveX.

  • (C++): Biblioteka DLL urządzeń inteligentnych MFC

    Aby uzyskać więcej informacji, zobacz Techniki testowania MFC.

Ta sekcja zawiera również informacje na następujące tematy:

Ten temat zawiera następujące części, w których omówiono sposób przygotowania debugowania biblioteki klas:

  • Tworzenie wersji debugowania

  • Debugowanie w trybie mieszanym

  • Zmiana konfiguracji domyślnych

  • Sposoby debugowania DLL

  • Aplikacja wywołująca

  • Formanty na stronie sieci Web

  • Okno bezpośrednie

Tworzenie wersji debugowania

Niezależnie od tego, w jaki sposób uruchamiasz debugowanie, upewnij się, że kompilujesz wersję debugowania pierwszej wersji biblioteki DLL, a następnie upewnij się, że wersja debugowania jest w miejscu, gdzie jej szuka.To może wydawać się oczywiste, ale jeśli zapomnisz o tym kroku, aplikacja może znaleźć inną wersję biblioteki DLL i ją załadować.Następnie program będzie kontynuował pracę i możesz się zastanawiać, dlaczego nigdy nie został osiągnięty punkt przerwania.Podczas debugowania, można sprawdzić, które biblioteki DLL program załadował, przez otwarcie okna modułów debugera.W oknie Moduły jest wyświetlana każda biblioteka DLL lub EXE załadowana w debugowanym procesie.Aby uzyskać więcej informacji, zobacz Porady: korzystanie z okna modułów.

Aby debuger dołączał do kodu napisanego w języku C++, kod musi wysyłać właściwość DebuggableAttribute.Można dodać to w kodzie automatycznie przez powiązanie z opcją konsolidatora /ASSEMBLYDEBUG.

Debugowanie w trybie mieszanym

Aplikacja wywołująca, która wywołuje bibliotekę DLL, może być napisana w kodzie zarządzanym lub natywnym.Jeśli zarządzana biblioteka DLL jest wywoływana przez kod macierzysty i chcesz debugować oba rodzaje kodu, należy włączyć debugery kodu zarządzanego i macierzystego.Można to wybrać w oknie dialogowym lub oknie <Projekt>Strony właściwości.Jak to zrobić zależy od tego, czy rozpoczynasz debugowanie od projektu biblioteki DLL czy projektu wywołującej aplikacji.Aby uzyskać więcej informacji, zobacz Porady: debugowanie w trybie mieszanym.

Zmiana konfiguracji domyślnych

Podczas tworzenia projektu aplikacji konsolowej przy użyciu szablonu projektu program Visual Studio automatycznie tworzy wymagane ustawienia konfiguracji Debug i Release.W razie potrzeby można zmienić te ustawienia.Aby uzyskać więcej informacji, zobacz Ustawienia projektu dla konfiguracji debugowania w C++, Ustawienia projektu dla konfiguracji debugowania w C#, Ustawienia projektu dla konfiguracji debugowania w Visual Basic, i Porady: ustawienia konfiguracji Debug i Release.

Sposoby debugowania DLL

Każdy z projektów w tej sekcji tworzy bibliotekę DLL.Nie można uruchomić biblioteki DLL bezpośrednio; musi ona zostać wywołana przez aplikację, zwykle EXE.Aby uzyskać więcej informacji, zobacz Tworzenie projektów Visual C++ i zarządzanie nimi.Aplikacja wywołująca może spełniać dowolne spośród następujących kryteriów:

  • Aplikacja utworzona w innym projekcie w tym samym rozwiązaniu Visual Studio zawierającym bibliotekę klas.

  • Istniejąca aplikacja już wdrożona na komputerze testów lub produkcji.

  • Znajdujące się w sieci Web i udostępniane za pośrednictwem adresu URL.

  • Aplikacja sieci Web zawierającą stronę sieci Web, która osadza biblioteki DLL.

Debugowanie aplikacji wywołującej

Aby debugować bibliotekę DLL, należy uruchomić debugowanie aplikacji wywołującej, zazwyczaj pliku EXE albo aplikacji sieci Web.Istnieje kilka sposobów jej debugowania.

  • Jeśli masz projekt dla aplikacji wywołującej, można otworzyć ten projekt i rozpocząć wykonywanie z menu Debugowanie.Aby uzyskać więcej informacji, zobacz <PAVEOVER>Porady: rozpoczęcie wykonywania.

  • Jeśli aplikacja wywołująca jest programem istniejącym już wdrożonym na komputerze testowym lub produkcyjnym i działa już, można dołączyć do niej.Tej metody należy użyć, jeśli biblioteka DLL jest formantem obsługiwanym przez program Internet Explorer lub formantem na stronie sieci Web.Aby uzyskać więcej informacji, zobacz <PAVE OVER> Porady: dołączanie do uruchomionego procesu.

  • Można to debugować z projektu DLL.Aby uzyskać więcej informacji, zobacz Porady: debugowanie z projektu DLL.

  • Można to debugować z okna natychmiastowego Visual Studio  .W tym przypadku okno Natychmiastowe odgrywa rolę aplikacji.

Przed rozpoczęciem debugowania aplikacji wywołującej, zazwyczaj ustawiany jest punkt przerwania w bibliotece klas.Aby uzyskać więcej informacji, zobacz Breakpoints and Tracepoints.Po osiągnięciu punktu przerwania można przechodzić przez kod, obserwując działanie w każdym wierszu, aż problem zostanie wyizolowany.Aby uzyskać więcej informacji, zobacz <PAVEOVER> Omówienie wykonywania kodu krok po kroku.

Formanty na stronie sieci Web

Aby debugować formant strony sieci Web, należy utworzyć stronę ASP.NET, w której będzie on osadzony (jeśli taka strona jeszcze nie istnieje).Następnie umieścić punkty przerwania w kodzie strony sieci Web, a także w kodzie sterującym.Następnie wywołaj stronę sieci Web z Visual Studio.

Przed rozpoczęciem debugowania aplikacji wywołującej, zazwyczaj ustawiany jest punkt przerwania w DLL.Po osiągnięciu punktu przerwania można przechodzić przez kod, obserwując działanie w każdym wierszu, aż problem zostanie wyizolowany.Aby uzyskać więcej informacji, zobacz Breakpoints and Tracepoints.

Okno bezpośrednie

Można ocenić funkcje lub metody w DLL bez wywoływana aplikacji.Dokonujesz debugowania w czasie projektowania i używasz okna Natychmiastowe.Aby debugować w ten sposób, wykonaj następujące kroki, gdy projekt DLL jest otwarty:

  1. Otworzyć okno debuggera Natychmiast.

  2. Aby przetestować metodę o nazwie Test w klasie Class1, należy utworzyć wystąpienie obiektu typu Class1 przez wpisanie w oknie bezpośrednim następującego kodu C#.Ten kod zarządzany działa dla języków Visual Basic i C++ po odpowiednich zmianach składni:

        Class1 obj = new Class1();
    

    W języku C# wszystkie nazwy muszą być w pełni kwalifikowane.Ponadto wszelkie metody lub zmienne muszą być w bieżącym zakresie i kontekście sesji debugowania.

  3. Przy założeniu, że Test przyjmuje jeden parametr int, oceń Test za pomocą okna Bezpośrednie:

       ?obj.Test(10)
    

    Wynik zostanie wydrukowany w oknie Bezpośrednie.

  4. Można kontynuować debugowanie Test, umieszczając w nim punkt przerwania, a następnie ponownie oceniając funkcję:

       ?obj.Test(10);
    

    Zostanie osiągnięty punkt przerwania i będzie można krokowo przetwarzać metodę Test.Po zakończeniu realizacji Test, Debuger będzie ponownie w trybie Projektowania.

Zobacz też

Informacje

Ustawienia projektu dla konfiguracji debugowania w C++

Koncepcje

Ustawienia projektu dla konfiguracji debugowania w C#

Ustawienia projektu dla konfiguracji debugowania w Visual Basic

Zabezpieczenia debugera

Inne zasoby

Debugowanie zarządzanego kodu

Przygotowanie debugowania: Typy projektów Visual C++

Przygotowanie debugowania: typy projektów C#, F# i Visual Basic