geht es hier ist mein Demon Code:GDB kann nicht Speicheradressfehler
0x0804844d <+0>: push %ebp
0x0804844e <+1>: mov %esp,%ebp
0x08048450 <+3>: and $0xfffffff0,%esp
0x08048453 <+6>: sub $0x20,%esp
0x08048456 <+9>: movl $0x8048540,(%esp)
0x0804845d <+16>: call 0x8048310 <[email protected]>
0x08048462 <+21>: lea 0x1c(%esp),%eax
0x08048466 <+25>: mov %eax,0x4(%esp)
0x0804846a <+29>: movl $0x8048555,(%esp)
0x08048471 <+36>: call 0x8048320 <[email protected]>
0x08048476 <+41>: mov 0x1c(%esp),%eax
0x0804847a <+45>: cmp $0x208c,%eax
0x0804847f <+50>: jne 0x804848f <main+66>
0x08048481 <+52>: movl $0x8048558,(%esp)
0x08048488 <+59>: call 0x8048310 <[email protected]>
0x0804848d <+64>: jmp 0x804849b <main+78>
=> 0x0804848f <+66>: movl $0x8048569,(%esp)
0x08048496 <+73>: call 0x8048310 <[email protected]>
0x0804849b <+78>: mov $0x0,%eax
0x080484a0 <+83>: leave
0x080484a1 <+84>: ret
was ich Tring ist 0x208c $ zu untersuchen. Wenn ich x/xw 0x208c eintippe, gibt es mir einen Fehler zurück, der besagt, dass auf Speicher unter Adresse 0x208c nicht zugegriffen werden kann. Wenn ich Info-Register schreibe und auf eax schaue, steht der Wert, den ich angegeben habe. Also im Grunde vergleicht dieses Programm zwei Werte und je nachdem druckt das etwas aus. Das Problem ist, dass dies Hausaufgaben von der Universität sind und ich keinen Code habe. Hoffe du kannst helfen. Vielen Dank.
[Finger in der Luft] Sie übergeben einen ungültigen Parameter? Du sitzt dort, vor dem Debugger. Was können wir herausfinden, dass Sie nicht können, vor allem ohne Quellcode? Es ist eine sehr seltsame Aufgabe, die Sie bittet, Sachen ohne Quelle zu reparieren ... –
Ich fand schließlich heraus, Druckanweisung statt x/xw zu verwenden, können Sie bitte erklären, warum Druck funktionierte und x nicht? – Ojs
$ 0x208c ist ein absoluter Wert, keine Speicheradresse! –