2016-05-22 11 views
0

Ich habe versucht, mit anderen Befehlen wie Echo zu haken und es funktioniert gut. Aber wenn es darum geht, den x-Befehl anzuhängen, schlägt er fehl. Hier sind die Codes in meiner .gdbinit-Datei.Wie kann ich den Befehl x in gdb haken?

set $pince_injection_failed = 1 
set $pince_debugging_mode = 0 
define hook-x 
    if $pince_injection_failed = 1 
    echo asdf 
end 

define hookpost-x 
    if $pince_debugging_mode = 0 
    echo zxcv 
end 

Ich bin mir bewusst, dass gdb keine Aliase einer Funktion zum Hooking akzeptiert. Aber x ist schon eine volle Funktion, nicht wahr? Ich konnte keine Aliase dafür finden. Ich zweifle auch daran, weil ein einzelnes Zeichen für einen Befehl zu kurz ist.

+1

'Haken-x' und' hookpost-x' Arbeit für mich in GDB 7.7.1 fehlt. Mit welcher Version haben Sie dieses Problem? Es könnte ein Fehler in alten Versionen sein, der behoben wurde. Beachten Sie auch, dass 'if $ pince_debugging_mode = 0' immer falsch ist; Wahrscheinlich willst du 'if $ pince_debugging_mode == 0'. Das Fehlen einer 'end'-Anweisung zum Beenden des' if 'kann auch dazu führen, dass der Befehl nicht funktioniert. –

+0

Meine Version ist 7.7.1. Ich habe gerade versucht '' hook-x' in der gdb-Session zu verwenden, anstatt die .gdbinit-Datei zu verwenden, und es funktioniert! Was könnte mit der .gdbinit-Datei falsch sein? Edit: Oh, auch Dank für die if-Anweisung Spitze Edit2: Ich habe versucht, eine minimalistische Version von gdbinit wie folgt zu schreiben: 'definieren Haken-x echo 1 end' Und es – Desertricker

+1

auch nicht arbeiten können Sie fügen einen 'echo'-Befehl als erste Zeile und letzte Zeile Ihrer .gdbinit-Datei hinzu, nur um zu prüfen, ob gdb sie liest? –

Antwort

0

Ich fand die Lösung dank der Mark Plotnick. Es scheint wie ein anderer Fehler von mir, ich fand heraus, dass es eine Funktion gab, die ein falsches Ende hatte, also kamen alle Funktionen, nachdem diese Funktion von gdb natürlich ignoriert wurde.

define keks 
    set $lel=0 
    while($lel<10) 
    x/x 0x00400000 
    set $lel = $lel+1 
end 

Beachten Sie die end am Ende der while-Schleife

Verwandte Themen