Debugowanie bibliotek DLL w programie Visual Studio (C#, C++, Visual Basic, F#)
Biblioteka DLL (biblioteka łączy dynamicznych) to biblioteka zawierająca kod i dane, które mogą być używane przez więcej niż jedną aplikację. Za pomocą programu Visual Studio można tworzyć, kompilować, konfigurować i debugować biblioteki DLL.
Tworzenie biblioteki DLL
Następujące szablony projektów programu Visual Studio mogą tworzyć biblioteki DLL:
- Biblioteka klas C#, Visual Basic lub F#
- Biblioteka formantów Windows Forms w języku C# lub Visual Basic (WCF)
- Biblioteka dynamicznych linków języka C++ (DLL)
Aby uzyskać więcej informacji, zobacz techniki debugowania MFC.
Debugowanie biblioteki WCF jest podobne do debugowania biblioteki klas. Aby uzyskać szczegółowe informacje, zobacz Kontrolki formularzy systemu Windows.
Zwykle wywołujesz bibliotekę DLL z innego projektu. Podczas debugowania projektu wywołującego, w zależności od konfiguracji biblioteki DLL, możesz przejść do kodu DLL i debugować go.
Konfiguracja debugowania bibliotek DLL
Gdy używasz szablonu projektu programu Visual Studio do tworzenia aplikacji, program Visual Studio automatycznie tworzy wymagane ustawienia konfiguracji kompilacji debugowania i wydania. W razie potrzeby możesz zmienić te ustawienia. Aby uzyskać więcej informacji, zobacz następujące artykuły:
- Ustawienia projektu dla konfiguracji debugowania w języku C++
- Ustawienia projektu dla konfiguracji debugowania .NET C#
- Ustawienia projektu dla konfiguracji debugowania w języku C#
- Ustawienia projektu dla konfiguracji debugowania w języku Visual Basic
- Instrukcje: ustawianie konfiguracji debugowania i wydawania
Set C++ DebuggableAttribute
Aby debuger dołączał do biblioteki DLL języka C++, kod C++ musi emitować kod DebuggableAttribute
.
Aby ustawić wartość DebuggableAttribute
:
Wybierz projekt DLL języka C++ w Eksplorator rozwiązań i wybierz ikonę Właściwości lub kliknij projekt prawym przyciskiem myszy i wybierz pozycję Właściwości.
W okienku Właściwości w obszarze Debugowanie konsolidatora> wybierz pozycję Tak (/ASSEMBLYDEBUG) dla zestawu możliwego do debugowania.
Aby uzyskać więcej informacji, zobacz /ASSEMBLYDEBUG.
Ustawianie lokalizacji plików DLL języka C/C++
Aby debugować zewnętrzną bibliotekę DLL, projekt wywołujący musi być w stanie znaleźć bibliotekę DLL, jego plik .pdb i wszystkie inne pliki wymagane przez bibliotekę DLL. Możesz utworzyć niestandardowe zadanie kompilacji, aby skopiować te pliki do <folderu> projektu\Debuguj folder wyjściowy lub skopiować tam pliki ręcznie.
W przypadku projektów C/C++ można ustawić lokalizacje plików nagłówków i LIB na stronach właściwości projektu, zamiast kopiować je do folderu wyjściowego.
Aby ustawić lokalizacje nagłówków C/C++ i plików LIB:
Wybierz projekt DLL języka C/C++ w Eksplorator rozwiązań i wybierz ikonę Właściwości lub kliknij projekt prawym przyciskiem myszy i wybierz polecenie Właściwości.
W górnej części okienka Właściwości w obszarze Konfiguracja wybierz pozycję Wszystkie konfiguracje.
W obszarze C/C++>General Additional Include Directories (Dodatkowe>katalogi dołączania) określ folder zawierający pliki nagłówka.
W obszarze Ogólne katalogi bibliotek dodatkowych konsolidatora>>określ folder zawierający pliki LIB.
W obszarze Dane wejściowe>konsolidatora>Dodatkowe zależności określ pełną ścieżkę i nazwę pliku dla plików LIB.
Wybierz przycisk OK.
Aby uzyskać więcej informacji na temat ustawień projektu języka C++, zobacz Dokumentacja strony właściwości języka Windows C++.
Tworzenie wersji debugowania
Przed rozpoczęciem debugowania upewnij się, że utworzono wersję debugowania biblioteki DLL. Aby debugować bibliotekę DLL, aplikacja wywołująca musi mieć możliwość znalezienia pliku .pdb i innych plików, których wymaga biblioteka DLL.
Możesz utworzyć niestandardowe zadanie kompilacji, aby skopiować pliki DLL do <folderu projektu> wywołującego\Debuguj folder wyjściowy lub skopiować tam pliki ręcznie.
Pamiętaj, aby wywołać bibliotekę DLL w prawidłowej lokalizacji. Może to wydawać się oczywiste, ale jeśli aplikacja wywołująca znajdzie i załaduje inną kopię biblioteki DLL, debuger nigdy nie osiągnie ustawionych punktów przerwania.
Debugowanie biblioteki DLL
Nie można bezpośrednio uruchomić biblioteki DLL. Musi być wywoływana przez aplikację, zwykle plik .exe . Aby uzyskać więcej informacji, zobacz Projekty programu Visual Studio — C++.
Aby debugować bibliotekę DLL, możesz rozpocząć debugowanie z poziomu aplikacji wywołującej lub debugować z projektu DLL, określając jego aplikację wywołującą. Możesz również użyć okna natychmiastowego debugera, aby ocenić funkcje bibliotek DLL lub metody w czasie projektowania bez używania aplikacji wywołującej.
Aby uzyskać więcej informacji, zobacz Pierwsze spojrzenie na debuger.
Rozpoczynanie debugowania z poziomu aplikacji wywołującej
Aplikacja, która wywołuje bibliotekę DLL, może być:
- Aplikacja z projektu programu Visual Studio w tym samym lub innym rozwiązaniu niż biblioteka DLL.
- Istniejąca aplikacja, która jest już wdrożona i uruchomiona na komputerze testowym lub produkcyjnym.
- Znajduje się w internecie i uzyskuje dostęp za pośrednictwem adresu URL.
- Aplikacja internetowa ze stroną internetową, która osadza bibliotekę DLL.
Aby debugować bibliotekę DLL z poziomu aplikacji wywołującej, możesz:
Otwórz projekt dla aplikacji wywołującej i rozpocznij debugowanie, wybierając pozycję Debuguj>rozpocznij debugowanie lub naciskając klawisz F5.
lub
Dołącz do aplikacji, która jest już wdrożona i uruchomiona na komputerze testowym lub produkcyjnym. Użyj tej metody dla bibliotek DLL w witrynach internetowych lub w aplikacjach internetowych. Aby uzyskać więcej informacji, zobacz How to: Attach to a running process (Instrukcje: dołączanie do uruchomionego procesu).
Przed rozpoczęciem debugowania aplikacji wywołującej ustaw punkt przerwania w pliku DLL. Zobacz Używanie punktów przerwania. Gdy punkt przerwania biblioteki DLL zostanie trafiony, możesz przejść przez kod, obserwując akcję w każdym wierszu. Aby uzyskać więcej informacji, zobacz Navigate code in the debugger (Nawigowanie po kodzie w debugerze).
Podczas debugowania możesz użyć okna Moduły, aby zweryfikować biblioteki DLL i pliki exe ładowane przez aplikację. Aby otworzyć okno Moduły, podczas debugowania wybierz pozycję Debuguj> moduły systemu Windows.> Aby uzyskać więcej informacji, zobacz Instrukcje: korzystanie z okna Moduły.
Korzystanie z okna natychmiastowego
Możesz użyć okna Natychmiastowe, aby ocenić funkcje lub metody DLL w czasie projektowania. Okno Natychmiastowe odgrywa rolę aplikacji wywołującej.
Uwaga
Okno Natychmiastowe można używać w czasie projektowania z większością typów projektów. Nie jest obsługiwana w przypadku programów SQL, projektów internetowych ani skryptów.
Aby na przykład przetestować metodę o nazwie Test
w klasie Class1
:
Po otwarciu projektu DLL otwórz okno Natychmiastowe, wybierając pozycję Debuguj>system Windows>Natychmiast lub naciskając klawisze Ctrl+Alt+I.
Utwórz wystąpienie obiektu typu
Class1
, wpisując następujący kod języka C# w oknie Natychmiastowy i naciskając klawisz Enter. Ten kod zarządzany działa w językach C# i Visual Basic z odpowiednimi zmianami składni:Class1 obj = new Class1();
W języku C#wszystkie nazwy muszą być w pełni kwalifikowane. Wszystkie metody lub zmienne muszą znajdować się w bieżącym zakresie i kontekście, gdy usługa językowa próbuje ocenić wyrażenie.
Zakładając, że
Test
przyjmuje jedenint
parametr, oceńTest
przy użyciu okna Natychmiastowe :?obj.Test(10);
Wynik zostanie wyświetlony w oknie Natychmiastowy .
Możesz kontynuować debugowanie
Test
, umieszczając wewnątrz niego punkt przerwania, a następnie ponownie oceniając funkcję.Punkt przerwania zostanie trafiony i można przejść przez
Test
polecenie . Po zakończeniuTest
wykonywania debuger wróci do trybu projektowania.
Debugowanie w trybie mieszanym
Możesz napisać aplikację wywołującą dla biblioteki DLL w kodzie zarządzanym lub natywnym. Jeśli aplikacja natywna wywołuje zarządzaną bibliotekę DLL i chcesz debugować obie te biblioteki, możesz włączyć zarówno zarządzane, jak i natywne debugery we właściwościach projektu. Dokładny proces zależy od tego, czy chcesz rozpocząć debugowanie z projektu DLL, czy projektu wywołującej aplikacji. Aby uzyskać więcej informacji, zobacz Instrukcje: debugowanie w trybie mieszanym.
Możesz również debugować natywną bibliotekę DLL z zarządzanego projektu wywołującego. Aby uzyskać więcej informacji, zobacz Jak debugować zarządzany i natywny kod.
Powiązana zawartość
- Debugowanie kodu zarządzanego
- Przygotowanie do debugowania projektów języka C++
- Typy projektów C#, F# i Visual Basic
- Ustawienia projektu dla konfiguracji debugowania języka C++
- Ustawienia projektu dla konfiguracji debugowania .NET C#
- Ustawienia projektu dla konfiguracji debugowania języka C#
- Ustawienia projektu dla konfiguracji debugowania języka Visual Basic
- Zabezpieczenia debugera