Udostępnij za pośrednictwem


Wyświetlanie kodu dezasemblacji w debugerze programu Visual Studio (C#, C++, Visual Basic, F#)

W oknie Dezasemblacja zostanie wyświetlony kod zestawu odpowiadający instrukcjom utworzonym przez kompilator. Jeśli debugujesz kod zarządzany, te instrukcje dotyczące zestawu odpowiadają kodowi natywnym utworzonemu przez kompilator Just in Time (JIT), a nie języka microsoft intermediate language (MSIL) utworzonego przez kompilator programu Visual Studio.

Uwaga

Aby w pełni skorzystać z okna Dezasemblacja , zapoznaj się z podstawowymi podstawami programowania w języku zestawu. Materiały referencyjne dla zestawów instrukcji firmy Intel znajdują się w 2. woluminie podręczników architektury. Ten materiał ma również zastosowanie do zestawów instrukcji AMD.

Ta funkcja jest dostępna tylko w przypadku włączenia debugowania na poziomie adresu. Nie jest dostępny do debugowania skryptu ani sql.

Oprócz instrukcji dotyczących zestawu okno Dezasemblacja może zawierać następujące opcjonalne informacje:

  • Adres pamięci, w którym znajduje się każda instrukcja. W przypadku aplikacji natywnych jest to rzeczywisty adres pamięci. W przypadku języka Visual Basic lub C# jest to przesunięcie od początku funkcji.

  • Kod źródłowy, z którego pochodzi kod zestawu.

  • Bajty kodu, czyli reprezentacje bajtów rzeczywistej maszyny lub instrukcji MSIL.

  • Nazwy symboli dla adresów pamięci.

  • Numery wierszy odpowiadające kodowi źródłowemu.

Instrukcje języka zestawu składają się z mnemonics, które są skrótami nazw instrukcji i symbolami zmiennych, rejestrów i stałych. Każda instrukcja języka maszynowego jest reprezentowana przez jeden mnemonic języka zestawu opcjonalnie, po którym następuje co najmniej jeden symbol.

Kod zestawu opiera się w dużym stopniu na rejestrach procesorów lub, w przypadku kodu zarządzanego, rejestrów środowiska uruchomieniowego języka wspólnego. Możesz użyć okna Dezasemblacji wraz z oknem Rejestry , które umożliwia sprawdzenie zawartości rejestru.

Aby wyświetlić instrukcje dotyczące kodu maszynowego w nieprzetworzonym formularzu liczbowym, a nie jako język zestawu, użyj okna Pamięć lub wybierz pozycję Bajty kodu z menu skrótów w oknie Dezasemblacja .

Korzystanie z okna Dezasemblacji

Aby włączyć okno Dezasemblacja, w obszarze Narzędzia>Opcje>debugowania wybierz pozycję Włącz debugowanie na poziomie adresu.

Aby otworzyć okno Dezasemblacji podczas debugowania, wybierz pozycję Dezasemblacja systemu Windows>lub naciśnij klawisze Alt+8.

Uwaga

Okna dialogowe i polecenia menu mogą się różnić od tych opisanych w Pomocy, w zależności od ustawień aktywnych lub wydania. Aby zmienić ustawienia, wybierz pozycję Importuj i Eksportuj Ustawienia w menu Narzędzia. Aby uzyskać więcej informacji, zobacz Resetowanie wszystkich ustawień.

Aby włączyć lub wyłączyć opcjonalne informacje, kliknij prawym przyciskiem myszy w oknie Dezasemblacja i ustaw lub wyczyść żądane opcje w menu skrótów.

Żółta strzałka na lewym marginesie oznacza bieżący punkt wykonywania. W przypadku kodu natywnego punkt wykonywania odpowiada licznikowi programu procesora CPU. Ta lokalizacja zawiera następną instrukcję, która zostanie wykonana w programie.

Stronicowanie w górę lub w dół w pamięci

Podczas wyświetlania zawartości pamięci w oknie Pamięć lub w oknie Dezasemblacji możesz użyć pionowego paska przewijania, aby przejść w górę lub w dół w przestrzeni pamięci.

  1. Aby stronicować w dół (przejdź do wyższego adresu pamięci), kliknij pionowy pasek przewijania poniżej pola przewijania.

  2. Aby stronicować w górę (przejdź do niższego adresu pamięci), kliknij pionowy pasek przewijania nad kciukiem.

    Zauważysz również, że pionowy pasek przewijania działa w sposób nietypowy. Przestrzeń adresowa nowoczesnego komputera jest bardzo duża i łatwo byłoby zgubić się, chwytając kciuk paska przewijania i przeciągając go do losowej lokalizacji. Z tego powodu kciuk jest "springloaded" i zawsze pozostaje w środku paska przewijania. W aplikacjach kodu natywnego można stronicować w górę lub w dół, ale nie można swobodnie przewijać.

    W aplikacjach zarządzanych dezasembleracja jest ograniczona do jednej funkcji i można je przewijać normalnie.

    Zauważysz, że wyższe adresy są wyświetlane w dolnej części okna. Aby wyświetlić wyższy adres, musisz przejść w dół, a nie w górę.

Przenieś w górę lub w dół jedną instrukcję

  • Kliknij strzałkę w górnej lub dolnej części pionowego paska przewijania.