还有 "step-out" / "step-over-instruction" 在 Simics 2021.24 中损坏?

Is "step-out" / "step-over-instruction" broken in Simics 2021.24?

Simics 2021.24 中的 Step-out 似乎被打破了。我做了“启用调试器”,但它仍然不起作用。请看下面:

simics>
[board.mb.cpu0.core[0][0]] cs:0x00000000def963ae p:0x0def963ae  sbb rax,rax
                                                  sbb rax,rax
cs:0x00000000def963ae p:0x0def963ae  sbb rax,rax
cs:0x00000000def963b1 p:0x0def963b1  and rax,rcx
cs:0x00000000def963b4 p:0x0def963b4  mov rdi,qword ptr [rsp+0x8]
cs:0x00000000def963b9 p:0x0def963b9  ret
cs:0x00000000def963ba p:0x0def963ba  mov rcx,r11
cs:0x00000000def963bd p:0x0def963bd  lea rax,[r9-0x1]
cs:0x00000000def963c1 p:0x0def963c1  shr rdx,cl
cs:0x00000000def963c4 p:0x0def963c4  cmp rdx,rax
cs:0x00000000def963c7 p:0x0def963c7  jb 0xdef96363
cs:0x00000000def963c9 p:0x0def963c9  sub rdx,r9
simics> step-out
simics> da %rip 10
cs:0x00000000def963ae p:0x0def963ae  sbb rax,rax
cs:0x00000000def963b1 p:0x0def963b1  and rax,rcx
cs:0x00000000def963b4 p:0x0def963b4  mov rdi,qword ptr [rsp+0x8]
cs:0x00000000def963b9 p:0x0def963b9  ret
cs:0x00000000def963ba p:0x0def963ba  mov rcx,r11
cs:0x00000000def963bd p:0x0def963bd  lea rax,[r9-0x1]
cs:0x00000000def963c1 p:0x0def963c1  shr rdx,cl
cs:0x00000000def963c4 p:0x0def963c4  cmp rdx,rax
cs:0x00000000def963c7 p:0x0def963c7  jb 0xdef96363
cs:0x00000000def963c9 p:0x0def963c9  sub rdx,r9

同样地,“step-over-instruction”似乎并没有跳过调用,而是进入了它们...

simics> step-over-instruction
                                                  call rax
cs:0x00000000dee41d19 p:0x0dee41d19  call rax
cs:0x00000000dee41d1b p:0x0dee41d1b  jmp 0xdee41d2d
cs:0x00000000dee41d1d p:0x0dee41d1d  mov rax,qword ptr [rip+0x265bc]
cs:0x00000000dee41d24 p:0x0dee41d24  mov rcx,rbp
cs:0x00000000dee41d27 p:0x0dee41d27  call qword ptr [rax+0xf8]
cs:0x00000000dee41d2d p:0x0dee41d2d  cmp si,r13w
cs:0x00000000dee41d31 p:0x0dee41d31  jb 0xdee41ced
cs:0x00000000dee41d33 p:0x0dee41d33  mov r13d,0x400
cs:0x00000000dee41d39 p:0x0dee41d39  mov eax,dword ptr [rbx+0x114]
cs:0x00000000dee41d3f p:0x0dee41d3f  sub eax,0x10
simics> step-over-instruction
                                                  sub rsp,0x28
cs:0x00000000dee39160 p:0x0dee39160  sub rsp,0x28
cs:0x00000000dee39164 p:0x0dee39164  test rdx,rdx
cs:0x00000000dee39167 p:0x0dee39167  je 0xdee39179
cs:0x00000000dee39169 p:0x0dee39169  mov rax,qword ptr [rip+0x1b58]
cs:0x00000000dee39170 p:0x0dee39170  mov rcx,rdx
cs:0x00000000dee39173 p:0x0dee39173  call qword ptr [rax+0xf8]
cs:0x00000000dee39179 p:0x0dee39179  add rsp,0x28
cs:0x00000000dee3917d p:0x0dee3917d  ret
cs:0x00000000dee3917e p:0x0dee3917e  int3
cs:0x00000000dee3917f p:0x0dee3917f  int3
simics> print -x %rax
0xdee39160

因此您可以看到它调用了设置 rax 的位置,而不是跳过调用。

step-outstep-over-instruction 都需要调试信息。您可以使用 add-symbol-file 添加调试信息。 如果您没有调试信息,则必须设置断点或 运行 直到调用后的指令。在这种情况下,这将是以下之一:

bp.memory.run-直到-x地址=p:0x0dee41d1b

bp.memory.break-x地址=p:0x0dee41d1b c

#IAmIntel