Die Adresse, wo der Dateiname geladen wurde, fehlt [GDB]

8

Ich habe folgenden Beispielcode

%Vor%

Ich habe diesen Code mit der Option -g in gcc kompiliert.

%Vor%

Generiere separate Symboldatei

%Vor%

Entfernen Sie die Symbole von a.out

%Vor%

Laden Sie diese a.out in gdb

%Vor%

gdb sagt "keine Debug-Informationen gefunden" in Ordnung. Dann benutze ich den Befehl add-symbol-file in gdb

%Vor%
  • Ich möchte wissen, wie man diese Adresse findet?
  • Gibt es einen Befehl oder einen Trick, um es zu finden?
  • Diese Adresse repräsentiert WAS?

Ich weiß, gdb hat einen anderen Befehl symbol-file , aber es überschreibt die vorherigen geladenen Symbole. Also muss ich diesen Befehl verwenden, um viele Symboldateien in gdb hinzuzufügen. Mein System ist 64bit mit ubuntu LTS 12.04 gdb Version ist 7.4-2012.04 GCC-Version ist 4.6.3

    
user3262212 02.02.2014, 08:01
quelle

1 Antwort

11
  

objcopy --only-keep-debug a.out a.out.sym

Wenn Sie möchten, dass GDB die a.out.sym automatisch lädt , führen Sie die folgenden Schritte aus hier (Beachten Sie insbesondere, dass Sie den Schritt" add .gnu_debuglink "tun müssen).

  

Diese Adresse repräsentiert WAS

Die Adresse, die GDB haben will, ist die Position des .text -Abschnitts der Binärdatei. Um es zu finden, verwenden Sie readelf -WS a.out . ZB

%Vor%

Hier wollen Sie GDB 0x401900 als Ladeadresse angeben.

    
Employed Russian 02.02.2014, 17:37
quelle

Tags und Links