Frage:
Was ist MSR-Ablaufverfolgung?
user2142
2013-06-03 00:01:38 UTC
view on stackexchange narkive permalink

Ich habe einen alten Blog-Beitrag auf OpenRCE gelesen, in dem die MSR-Ablaufverfolgung im Zusammenhang mit der binären Profilerstellung und Berichterstattung erwähnt wird. Die einzigen Google-Treffer für diesen Begriff sind einige E-Mails auf der Xen-Mailingliste, die ich nicht verstehen kann. Was ist MSR-Tracing?

Ich vermute, Rolf wird in Kürze eine detaillierte Antwort geben, aber in der Zwischenzeit fand ich diesen Beitrag auf OpenRCE sehr hilfreich: http://www.openrce.org/blog/view/535/Branch_Tracing_with_Intel_MSR_Registers
Einer antworten:
Brendan Dolan-Gavitt
2013-06-03 04:39:44 UTC
view on stackexchange narkive permalink

MSR-Tracing bezieht sich im Allgemeinen auf die Verwendung der Intel Model-Specific Registers (MSRs), um Trace-Informationen von der CPU zu erhalten. Da moderne Prozessoren (im Allgemeinen nach Pentium 4) Hardware-Unterstützung für das Debuggen bieten, kann dies schneller sein als reine Softwarelösungen. Dies kann auf verschiedene Arten geschehen:

  • Wie in einem -Post von Pedram Amini beschrieben, kann die Ausführung in einem Schritt durch Einstellen von beschleunigt werden MSR_DEBUGCTLA MSR und Aktivieren des Flags BTF (Einzelschritt auf Zweigen) . Dies bietet eine bessere Leistung als reines Einzelschrittverfahren, wodurch bei jedem Befehl eine Debug-Ausnahme ausgelöst wird.

  • Sie können den " Branch Trace Store (BTS) code" verwenden > "Möglichkeit, alle Zweige in einem Puffer im Speicher zu protokollieren; Darüber hinaus kann der Prozessor so konfiguriert werden, dass ein Interrupt ausgelöst wird, wenn dieser Puffer gefüllt ist, sodass Sie ihn auf die Festplatte (oder was auch immer Sie möchten) leeren können. Bei einigen Modellen gibt es auch Optionen, um nur den Code im Benutzermodus (CPL> 0) oder nur im Kernelmodus (CPL = 0) zu verfolgen. Die Abschnitte 17.4.5-6 und 17.4.9 des Intel Software Developer's Manual, Band 3B, müssen gelesen werden, wenn Sie diesen Weg gehen.

    Unter Linux gibt es eine gewisse Kernel-Unterstützung dafür, soweit ich weiß kann nicht sagen, dass nichts davon es in den Aktienkern geschafft hat. Im Jahr 2011 gab es einen vorgeschlagenen Patch von Akihiro Nagai für das Tool perf , um einen Befehl perf branch trace hinzuzufügen, der das Intel BTS-System verwenden würde. Eine Präsentation dazu ist ebenfalls verfügbar. Außerdem wurde 2007 ein Patch für ptrace vorgeschlagen, um die BTS-Funktion verfügbar zu machen.

    Ich weiß nichts Außergewöhnliches. Regal, das dies in Windows tun kann.

  • Wenn Sie sich nur für eine relativ kleine (4-16) Anzahl von Zweigen interessieren, können Sie die Funktion Last Branch Recording (LBR) verwenden. Dies hat den Vorteil, dass im Grunde kein Overhead entsteht, aber der ziemlich große Nachteil, dass Sie nur die letzten N Zweige erhalten, wobei N je nach Prozessor variiert (von nur 4 bis zu 16). Details hierzu finden Sie in Abschnitt 17.4.8 des Intel-Entwicklerhandbuchs.

    Ein interessanter Hinweis ist, dass Haswell (Intels gerade veröffentlichte Prozessorarchitektur) eine Version davon hat Dadurch werden Anrufe und Rückgaben nachverfolgt, sodass Sie effektiv einen kleinen Schattenanrufstapel erhalten, der in einigen Szenarien sehr nützlich sein kann.

    LBR wurde auch in mindestens einem verwendet Sicherheitssystem, um zu überprüfen, ob eine Funktion nur von einer vertrauenswürdigen Quelle aufgerufen wird, dies wird jedoch für die Frage etwas unangebracht.

Zusammenfassend lässt sich also sagen: MSR-Tracing ist eine Möglichkeit, das Tracing mithilfe der Hardwareunterstützung in Intel-Prozessoren schneller durchzuführen. Theoretisch ist es sehr ansprechend, aber es gibt (noch) nicht viel Unterstützung für allgemein verfügbare Tools.

Quellen:

Gute Antwort. Ich würde diesen Artikel als Quelle für die Durchsicht hinzufügen: http://www.codeproject.com/Articles/517466/Last-branch-records-and-branch-tracing


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...