GDB JIT Interface einfachste Beispiel

8

Ich habe das Kapitel JIT Interface gelesen und bin dem Problem begegnet: Wie schreibe ich ein einfaches Beispiel? für möglichst einfachen Code (vorzugsweise in C ++ und mindestens für x86-64 Plattform)? Sagen wir, ich möchte den folgenden Code debuggen (nämlich code_.data() function):

%Vor%

Was (minimal) sollte ich tun, um die Schnittstelle zu benutzen? Insbesondere möchte ich, wenn es möglich ist, einen Pseudocode (beliebigen Text im Speicher) als "Quelle" (mit entsprechenden Zeileninformationen) bereitstellen können.

So instrumentieren Sie den obigen Code (oder etwas Ähnliches), während Sie knapp bleiben.

#include "eallocator.hpp" sollte die Ansätze von dies für Windows oder von dies für Linux .

    
Orient 18.11.2013, 11:44
quelle

2 Antworten

3

Wenn ich Sie richtig verstehe, versuchen Sie, etwas ausführbaren Code dynamisch in den Speicher zu übertragen und GDB so einzurichten, dass Sie es debuggen können. Ist das korrekt?

Was es schwierig macht, diese Aufgabe in einem "minimalen" Beispiel zu formulieren, ist, dass GDB tatsächlich erwartet, ein ganzes ELF-Objekt im Speicher zu finden, nicht nur eine Menge Code. Die Registrierungsschnittstellen von GDB benötigen ELF-Symboltabellen, um zu untersuchen, welche Symbole in dem ausgegebenen Code existieren und wo sie sich befinden.

Die beste Möglichkeit, dies ohne unangemessenen Aufwand zu tun, ist LLVM zu betrachten. Der Abschnitt Debugging von JIT-ed Code mit GDB in der Dokumentation beschreibt, wie man dies mit MCJIT macht, mit einem vollständigen Beispiel im unten - gehen von einem einfachen C-Code aus, JIT es in den Speicher mit LLVM MCJIT und anhängen GDB daran. Außerdem, da das LLVM MCJIT-Framework beteiligt ist, erhalten Sie dort vollständige Debug-Informationen, bis zur C-Ebene!

Um ehrlich zu sein, dieser Dokumentationsabschnitt wurde seit einiger Zeit nicht mehr aktualisiert, aber es sollte funktionieren. Lass es mich wissen, wenn nicht - ich werde Dinge reparieren und aktualisieren.

Ich hoffe, das hilft.

    
Eli Bendersky 19.12.2013, 14:26
quelle
3

Es gibt ein Beispiel in ihren Tests, das helfen sollte

Ссылка

    
ReDucTor 25.11.2013 21:49
quelle

Tags und Links