2017-03-21 2 views
0

Hier mein Demon Code ist:Speicher kann nicht zugreifen - GDB

Dump of assembler code for function main: 
0x00000000000006b0 <+0>: push %rbp 
0x00000000000006b1 <+1>: mov %rsp,%rbp 
0x00000000000006b4 <+4>: sub $0x10,%rsp 
0x00000000000006b8 <+8>: movl $0xa,-0xc(%rbp) 
0x00000000000006bf <+15>: lea -0xc(%rbp),%rax 
0x00000000000006c3 <+19>: mov %rax,-0x8(%rbp) 
0x00000000000006c7 <+23>: lea 0x96(%rip),%rdi  # 0x764 
0x00000000000006ce <+30>: mov $0x0,%eax 
0x00000000000006d3 <+35>: callq 0x560 <[email protected]> 
0x00000000000006d8 <+40>: mov $0x0,%eax 
0x00000000000006dd <+45>: leaveq 
0x00000000000006de <+46>: retq 

, wenn ich den Haltepunkt an 0x06b4 von b * 0x00000000000006b4 gesetzt und den Code ausführen es einen Fehler Starting program: /root/print.out Warning: Cannot insert breakpoint 4. Cannot access memory at address 0x6b4 ist aber geben, wenn ich es mit b 4 und den Code ausführen, es funktioniert normal. Was mache ich im ersten Fall falsch?

+2

Haben Sie die Adressen überprüft, wenn die Haltepunkte funktionieren? Passen sie zur Demontage? –

+0

Ja, sie sind gleich –

+2

Diese Adressen sind außerordentlich niedrig. Können Sie bitte Ihre Frage bearbeiten, um eine Beschreibung Ihres Betriebssystems, Kompilierungseinstellungen, gdb-Befehlszeilenoptionen usw. hinzuzufügen? –

Antwort

1

Dump of assembler code for function main: 0x00000000000006b0 <+0>: push %rbp 0x00000000000006b1 <+1>: mov %rsp,%rbp

Du bei position-independent executable (eine besondere Art von Shared Library) suchen. Der Code für main wird verschoben an eine andere Adresse, wenn die ausführbare Datei gestartet wird.

Da bei 0x6b4 kein Code vorhanden ist, nachdem die ausführbare Datei verschoben wurde, beschwert sich GDB, dass dort kein Haltepunkt festgelegt werden kann.

aber wenn ich es mit b 4 und den Code ausführen, funktioniert es normal.

In diesem Fall versteht GDB, dass Sie den Breakpoint setzen wollen auf Linie 4 und fügt entsprechende Unterbrechungs nach die ausführbare Datei verschoben worden ist.

Verwenden Sie info break, um zu sehen, wie die verschobene Adresse lautet.

Verwandte Themen