Was ist der Unterschied zwischen Hardware- und Software-Breakpoints?
Was ist der Unterschied zwischen hardware-und software-breakpoints?
Sind hardware-breakpoints sind angeblich schneller sein als die software-breakpoints, wenn ja, dann wie, und auch warum dann würden wir brauchen die software-breakpoints?
InformationsquelleAutor der Frage Aquarius_Girl | 2012-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Artikel gibt eine gute Diskussion von pros und cons:
http://www.nynaeve.net/?p=80
Beantworten Ihre Frage direkt software-Haltepunkte sind flexibler, da die hardware-Haltepunkte sind eingeschränkt in etwas Funktionalität und sehr stark von der Architektur-abhängig. Ein Beispiel im Artikel gegeben wird, dass der x86-hardware hat ein limit von 4 hardware-breakpoints.
Hardware-breakpoints sind schneller, weil Sie gewidmet haben, registriert und weniger Aufwand als software-breakpoints.
InformationsquelleAutor der Antwort SpliFF
Können Sie durch GDB internals, die sehr gut erklärt, die HW-und SW-breakpoints.
HW-breakpoints sind etwas, die Unterstützung benötigen, von MCU. Der ARM-Controller verfügen über spezielle Register, wo Sie schreiben können, einige Adressraum, wenn der PC (program counter) == sp-register der CPU wird angehalten. Jtag ist in der Regel erforderlich, um zu schreiben in die besonderen Register.
SW-break-Punkte implementiert sind, sind in der GDB wird durch das einfügen eines trap-oder illegalen teilen, oder eine andere Anweisung, die zu einer Ausnahme führen, und dann, wenn es gestoßen, in dem der gdb wird die exception und beendet das Programm. Wenn der Benutzer sagt weiter, gdb wird wieder der original-instruction, single-step, re-legen Sie die Falle und ziehen weiter.
Es gibt eine Menge von Vorteilen mit HW Debugger über SW-Debugger vor allem, wenn Sie Umgang mit interrupts und memory-bus-Geräte. AFAIK unterbricht, können nicht debuggt werden, mit software-Debuggern.
InformationsquelleAutor der Antwort Kamath
Hardware-breakpoints sind eigentlich Vergleicher, Vergleich der aktuellen PC mit der Adresse in den Komparator (wenn aktiviert). Hardware-breakpoints sind die beste Lösung, wenn das setzen von breakpoints. In der Regel legen über den debug-Sonde (über JTAG, SWD, ...). Der Nachteil von hardware-breakpoints: Sie begrenzt sind. CPUs haben nur eine begrenzte Zahl von hardware-breakpoints (Komparatoren). Die Anzahl der verfügbaren hardware-breakpoints hängt von der CPU. ARM-7/9-Kerne haben 2 moderne ARM-Geräten (Cortex-M-0,3,4) zwischen 2 und 6,
x86-Regel 4.
Software-breakpoints sind in der Tat gesetzt, durch den Austausch die Ausbildung breakpointed mit einem breakpoint-Anweisung. Der breakpoint-Anweisung vorhanden ist, in den meisten CPUs, und in der Regel so kurz wie die kürzeste Anweisung, also nur ein byte auf x86 (0xcc, INT 3). Auf den Cortex-M-CPUs, die Anweisungen sind 2 oder 4 Byte, so dass der breakpoint-Anweisung ist eine 2-byte-Instruktion.
Software breakpoints können leicht eingestellt werden, wenn das Programm befindet sich im Arbeitsspeicher (wie am PC). Viele embedded-Systeme haben das Programm befindet sich im flash-Speicher. Hier ist es nicht so einfach zu tauschen die Anweisung, wie die flash umprogrammiert werden, so dass hardware-Haltepunkte sind in Erster Linie verwendet. Die meisten debug-probes nur Unterstützung für die hardware-Haltepunkte, wenn das Programm befindet sich im flash-Speicher. Jedoch, einige (wie z.B. SEGGER J-Link) erlauben die Programmierung der flash-Speicher mit breakpoint-Instruktion und aso erlauben eine unbegrenzte Anzahl von software breakpoints, auch beim Debuggen eines Programms im flash.
Mehr info über die software-breakpoints im flash-Speicher
InformationsquelleAutor der Antwort Rolf
Zusätzlich zu den oben genannten Antworten, es ist auch wichtig zu beachten, dass, während die software-breakpoints überschreiben bestimmte Anweisungen im Programm, um zu wissen, wo zu stoppen, die der eher begrenzten Zahl von hardware-breakpoints sind tatsächlich ein Teil des Prozessors.
Justin Seitz in seinem Buch Gray Hat Python weist darauf hin, dass der wichtige Unterschied hier ist, dass durch das überschreiben von Anweisungen, software-breakpoints tatsächlich ändern die CRC der Datei, und so jede Art von Programm, wie ein Stück von malware, die berechnet die CRC-können das Verhalten ändern in Reaktion auf Haltepunkte gesetzt werden, in der Erwägung, dass mit hardware breakpoints ist es weniger offensichtlich, dass der debugger anhalten und Durchlaufen bestimmte Codeabschnitte.
InformationsquelleAutor der Antwort a10y
Kurz -, hardware-Haltepunkte machen Gebrauch von speziellen Registern und sind daher in Ihrer Anzahl begrenzt. Diese kann eingestellt werden auf beiden flüchtigen und nicht flüchtigen Speicher.
Software breakpoints gesetzt sind, durch den Austausch der opcode der Instruktion, die im RAM-Speicher mit Haltepunkt-Anweisung. Diese werden nur im RAM-Speicher(Flash-Speicher ist nicht möglich geschrieben werden) und sind nicht beschränkt.
Dieser Artikel bietet eine gute Erklärung über die Haltepunkte.
Dank und Grüße,
Shivakumar V W
InformationsquelleAutor der Antwort Shivakumar
Beobachtungspunkte sind ein Fall, in dem hardware, die Handhabung ist viel schneller:
Wenn Sie geben Sie diese Befehle auf GDB 7.7 x86-64 heißt es:
Diese hardware für x86 ist erwähnt bei: http://en.wikipedia.org/wiki/X86_debug_register
Ist es wahrscheinlich möglich, weil die vorhandene paging-Schaltung, die schafft es jeden Speicher zugreifen.
Die "software" alternative Schritt das Programm, die sehr langsam.
Vergleichen, die regelmäßige Haltepunkte, an denen zumindest in der software-Implementierung und fügt
int3
Unterricht und lässt das Programm laufen, so dass Sie nur bezahlen, overhead, wenn ein Haltepunkt erreicht wird.InformationsquelleAutor der Antwort Ciro Santilli 包子露宪 六四事件 法轮功
Einige Zitat aus dem Intel-System-Debugger-Hilfe doc:
InformationsquelleAutor der Antwort smwikipedia