2012-02-16 5 views
1

なぜ私は%eaxの情報にアクセスできませんか?ここにスクリーンショットがあります。私は%eaxはある種の文字列を保持しているかなり確信している...

enter image description here

[OK]をここで機能イムデバッグです。それは6つの数字がかかり、1つが間違っていると "爆弾"が爆発する。ここでは関数である。

40106b: 55      push %rbp 
40106c: 53      push %rbx 
40106d: 48 83 ec 28    sub $0x28,%rsp 
401071: 48 89 e6    mov %rsp,%rsi 
401074: e8 ae 03 00 00   callq 401427 <read_six_numbers> 
401079: 83 3c 24 01    cmpl $0x1,(%rsp) 
40107d: 74 05     je  401084 <phase_2+0x19> 
40107f: e8 6d 03 00 00   callq 4013f1 <explode_bomb> 
401084: 48 8d 5c 24 04   lea 0x4(%rsp),%rbx 
401089: 48 8d 6c 24 18   lea 0x18(%rsp),%rbp 
40108e: 8b 43 fc    mov 0xfffffffffffffffc(%rbx),%eax 
401091: 01 c0     add %eax,%eax 
401093: 39 03     cmp %eax,(%rbx) 
401095: 74 05     je  40109c <phase_2+0x31> 
401097: e8 55 03 00 00   callq 4013f1 <explode_bomb> 
40109c: 48 83 c3 04    add $0x4,%rbx 
4010a0: 48 39 eb    cmp %rbp,%rbx 
4010a3: 75 e9     jne 40108e <phase_2+0x23> 
4010a5: 48 83 c4 28    add $0x28,%rsp 
4010a9: 5b      pop %rbx 
4010aa: 5d      pop %rbp 
4010ab: c3      retq 

、これは必要に応じてread_six_numbersです:

0000000000401427 <read_six_numbers>: 
401427: 48 83 ec 18    sub $0x18,%rsp 
40142b: 48 8d 4e 04    lea 0x4(%rsi),%rcx 
40142f: 48 8d 46 14    lea 0x14(%rsi),%rax 
401433: 48 89 44 24 08   mov %rax,0x8(%rsp) 
401438: 48 8d 46 10    lea 0x10(%rsi),%rax 
40143c: 48 89 04 24    mov %rax,(%rsp) 
401440: 4c 8d 4e 0c    lea 0xc(%rsi),%r9 
401444: 4c 8d 46 08    lea 0x8(%rsi),%r8 
401448: 48 89 f2    mov %rsi,%rdx 
40144b: be 7e 26 40 00   mov $0x40267e,%esi 
401450: b8 00 00 00 00   mov $0x0,%eax 
401455: e8 26 f7 ff ff   callq 400b80 <[email protected]> 
40145a: 83 f8 05    cmp $0x5,%eax 
40145d: 7f 05     jg  401464 <read_six_numbers+0x3d> 
40145f: e8 8d ff ff ff   callq 4013f1 <explode_bomb> 
401464: 48 83 c4 18    add $0x18,%rsp 
401468: c3      retq 
+0

画像にリンクするのではなく、ここにログを貼り付けてください。あなたは 'eax'に文字列があると思いますか? –

+0

は%eaxが2番目のエントリと比較するためです。 – user1186549

+0

okこれまでのところ、cmpl $ 0x1(%rsp)のため、最初のエントリは1です。私の2番目のエントリ私は2としてテストし、それが動作したが、なぜその理由 – user1186549

答えて

3

代わりx/w $raxを試してみてください。 GDBは、64ビットコードをデバッグするときに何があるのか​​分かりません($eax)。

これはGDBのバグ(let)と考えられます。

関連する問題