Jaka jest różnica między punktami przerwania sprzętu i oprogramowania?

Jaka jest różnica między punktami przerwania sprzętu i oprogramowania?

Czy mówi się, że hardware breakpoints jest szybszy niż software breakpoints, jeśli tak, to w jaki sposób i po co w ogóle potrzebujemy software breakpoints?

Author: Aquarius_Girl, 2012-01-16

7 answers

Ten artykuł stanowi dobrą dyskusję na temat plusów i minusów: http://www.nynaeve.net/?p=80

Aby odpowiedzieć bezpośrednio na twoje pytanie, punkty przerwania oprogramowania są bardziej elastyczne, ponieważ punkty przerwania sprzętu są ograniczone w niektórych funkcjach i wysoce zależne od architektury. Jednym z przykładów podanych w artykule jest to, że sprzęt x86 ma limit 4 sprzętowych punktów przerwania.

Sprzętowe punkty przerwania są szybsze, ponieważ mają dedykowane rejestry i są mniej obciążone niż oprogramowanie punkty przerwania.

 22
Author: SpliFF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-16 10:39:45

Możesz przejść przez wewnętrzne GDB , to bardzo dobrze wyjaśnia punkty przerwania HW i SW.

HW breakpoints to coś, co wymaga wsparcia ze strony MCU. Kontrolery ARM posiadają specjalne rejestry, w których można zapisać pewną przestrzeń adresową, za każdym razem, gdy komputer PC (licznik programów) == SP rejestruje procesor. Jtag jest zwykle wymagany do zapisu w tych specjalnych rejestrach.

SW break points są zaimplementowane w GDB poprzez wstawienie pułapki, nielegalnego podziału lub innej instrukcji, która spowoduje wyjątek, a gdy zostanie napotkany, gdb weźmie wyjątek i zatrzyma program. Gdy użytkownik powie, aby kontynuować, gdb przywróci oryginalną instrukcję, w jednym kroku, ponownie włóż pułapkę i kontynuuj.

Istnieje wiele zalet w używaniu debugerów sprzętowych nad DEBUGGERAMI sprzętowymi, zwłaszcza jeśli masz do czynienia z przerwaniami i urządzeniami magistrali pamięci. Przerwania AFAIK nie mogą być debugowane za pomocą debugerów programowych.

 14
Author: Kamath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-17 00:21:55

Hardware breakpoints są w rzeczywistości komparatorami, porównującymi bieżący komputer z adresem w komparatorze (gdy jest on włączony). Sprzętowe punkty przerwania są najlepszym rozwiązaniem przy ustawianiu punktów przerwania. Zazwyczaj ustawiane za pomocą sondy debugowania (za pomocą JTAG, SWD, ...). Minusy sprzętowych punktów przerwania: są one ograniczone. Procesory mają tylko ograniczoną liczbę sprzętowych punktów przerwania (komparatorów). Liczba dostępnych sprzętowych punktów przerwania zależy od procesora. Rdzenie ARM 7/9 posiadają 2, nowoczesne urządzenia ARM (Cortex-M 0,3,4) między 2 a 6, x86 Zwykle 4.

Punkty przerwania oprogramowania są w rzeczywistości ustawiane przez zastąpienie instrukcji do wskazania przerwania instrukcją punktu przerwania. Instrukcja punktu przerwania jest obecna w większości procesorów i zwykle jest tak krótka jak najkrótsza Instrukcja, więc tylko jeden bajt na x86 (0XCC, INT 3). W procesorach Cortex-M instrukcje mają 2 lub 4 bajty, więc instrukcja punktu przerwania jest instrukcją dwubajtową.

Punkty przerwania oprogramowania można łatwo ustawić, Jeśli program znajduje się w pamięci RAM (np. na PC). Wiele systemów wbudowanych posiada program umieszczony w pamięci flash. Tutaj nie jest tak łatwo wymienić instrukcję, ponieważ flash musi zostać przeprogramowany, więc sprzętowe punkty przerwania są używane przede wszystkim. Większość sond debugujących obsługuje tylko sprzętowe punkty przerwania, jeśli program znajduje się w pamięci flash. Jednak niektóre (takie jak J-Link SEGGERA) pozwalają na przeprogramowanie pamięci flash za pomocą instrukcji punktu przerwania, a aso pozwala na nieograniczoną liczbę (programowych) punktów przerwania nawet wtedy, gdy debugowanie programu znajdującego się we flashu.

Więcej informacji o punktach przerwania oprogramowania w pamięci flash

 10
Author: Rolf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-16 12:24:27

Oprócz powyższych odpowiedzi, ważne jest również, aby pamiętać, że podczas gdy punkty przerwania oprogramowania zastępują określone instrukcje w programie, aby wiedzieć, gdzie się zatrzymać, bardziej ograniczona liczba punktów przerwania sprzętu jest w rzeczywistości częścią procesora.

Justin Seitz w swojej książce szary kapelusz Pyton wskazuje, że istotną różnicą jest to, że przez nadpisanie instrukcji, punkty przerwania oprogramowania faktycznie zmieniają CRC pliku, a więc każdy rodzaj program taki jak złośliwe oprogramowanie, które oblicza swoje CRC, może zmienić swoje zachowanie w odpowiedzi na ustawiane punkty przerwania, podczas gdy w przypadku punktów przerwania sprzętowego mniej oczywiste jest, że debugger zatrzymuje się i przechodzi przez określone fragmenty kodu.

 4
Author: a10y,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-19 05:48:26

Krótko mówiąc, sprzętowe punkty przerwania wykorzystują dedykowane rejestry i dlatego ich liczba jest ograniczona. Można je ustawić zarówno w pamięci lotnej, jak i nieulotnej.

Punkty przerwania oprogramowania są ustawiane przez zastąpienie kodu OPC instrukcji w pamięci RAM instrukcją punktu przerwania. Można je ustawić tylko w pamięci RAM (zapis pamięci Flash nie jest możliwy) i nie są ograniczone.

Ten artykuł zawiera dobre wyjaśnienie dotyczące punktów przerwania.

Dzięki i pozdrawiam, Shivakumar V W

 1
Author: Shivakumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-11 19:06:33

Punkty obserwacyjne to przypadek, w którym obsługa sprzętu jest znacznie szybsza:

watch var
rwatch var
awatch var

Po wpisaniu tych komend na GDB 7.7 x86-64 pisze:

Hardware watchpoint 2: var

Ta zdolność sprzętowa dla x86 jest wymieniona pod adresem: http://en.wikipedia.org/wiki/X86_debug_register

Jest to prawdopodobnie możliwe dzięki istniejącemu obwodowi stronicowania, który zarządza każdym dostępem do pamięci.

Alternatywą dla "oprogramowania" jest jednoetapowy program , który jest Bardzo powoli.

Porównaj to ze zwykłymi punktami przerwania, gdzie co najmniej implementacja oprogramowania wstawia i int3 instrukcję i pozwala programowi działać, więc płacisz tylko wtedy, gdy punkt przerwania zostanie uderzony.

 0
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-07 06:47:27

Jakiś cytat z debuggera systemu Intel help doc:

Hardware vs. Software Breakpoints Debugger może używać zarówno sprzętu i punkty przerwania oprogramowania, każdy z nich ma mocne i słabe strony:

Hardware Breakpoints są implementowane przy użyciu architektury DRx rejestry punktów przerwania opisane w Intel SDM. Mają zaletą bycia użytecznym bezpośrednio przy resecie, nieulotnym i możliwość użycia z lampą błyskową lub innymi pamięć tylko do odczytu. Minusem jest że są skończonym zasobem. punkty przerwania oprogramowania wymagają modyfikowanie pamięci systemowej w miarę ich implementacji poprzez zastąpienie kod opcode w żądanym miejscu ze specjalną instrukcją. To sprawia, że są nieograniczonym zasobem, ale zależność od pamięci oznacza, że nie można zainstalować je przed załadowaniem modułu do pamięci, a jeśli oprogramowanie docelowe nadpisuje tę pamięć, a następnie staną się nieważne. Ogólnie rzecz biorąc, każda funkcja debugowania, która musi być włączony przez debugger nie utrzymuje się po resecie i może ulec zmianie po innych przejścia w trybie architektonicznym, takie jak wejście/wyjście SMM lub VM wejście/wyjście. Konkretne przykłady to:

Reset procesora wyczyści wszystkie funkcje debugowania, z wyjątkiem przerwy resetowania. To oznacza na przykład, że określone przez użytkownika punkty przerwania będą nieprawidłowe dopóki cel nie zatrzyma się raz po resecie. Zauważ, że to zatrzymanie może być z powodu reset-break lub z powodu zatrzymania zainicjowanego przez użytkownika. W w obu przypadkach debuger przywróci niezbędne funkcje debugowania. Wejście/Wyjście SMM wyłączy / ponownie włączy punkty przerwania, oznacza to, że nie można określić punktu przerwania w pamięci SMRAM, gdy jest ona zatrzymana poza pamięcią SMRAM. Jeśli chcesz przerwy w SMRAM, musisz najpierw zatrzymać się na SMM entry-break i ręcznie zastosować punkt przerwania. Alternatywnie możesz popraw BIOS, aby ponownie włączyć punkty przerwania podczas wprowadzania SMM, ale to wymaga możliwości modyfikacji BIOSu, który nie może być używany w produkcja kod.

 0
Author: smwikipedia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-23 09:22:13