为什么xcode/lldb/x86不能正确执行此操作?

为什么xcode/lldb/x86不能正确执行此操作?,xcode,x86,lldb,Xcode,X86,Lldb,Swift程序运行良好。在生成的swift\u rt\u swift\u发布代码中,您会发现: SystemSensor`swift_rt_swift_release: -> 0x100002c22 <+18>: leaq 0x91573f(%rip), %rax ; _swift_release 0x100002c29 <+25>: movq (%rsp), %rdi 0x100002c2d <+29>: callq

Swift程序运行良好。在生成的swift\u rt\u swift\u发布代码中,您会发现:

SystemSensor`swift_rt_swift_release:
->  0x100002c22 <+18>: leaq   0x91573f(%rip), %rax      ; _swift_release
    0x100002c29 <+25>: movq   (%rsp), %rdi
    0x100002c2d <+29>: callq  *(%rax)
而且,这似乎是一个永久性的变化:如果我将rax设置为正确的值并继续,它将在具有相同错误值的相同位置中断(地址无效)

这是相当可复制的。奇怪的是,rax的正确值和错误值之间的差值是0x0000000034000000

在这里,我不知所措。有什么想法吗


macbook pro/macos 10.12.4/xcode 8.3.2

我无法让您描述的行为发生。如果你有一个重复的例子,你能像这里描述的那样提交一个bug吗?谢谢,谢谢,吉姆。不幸的是,我的案例涉及一堆专有代码。我看看能想出什么办法。我只在xcode中对一些语句(包括函数返回)使用step over按钮时遇到过这种情况。由于所讨论的代码与释放引用有关,我怀疑函数返回可能会混淆事情。。。
(lldb) reg wri rip 0x100002c22
(lldb) si
(lldb) reg read
General Purpose Registers:
       rax = 0x00000000cc918368
       ...