我遇到一个问题,即边界在动画期间获取NaN原点值,而堆栈跟踪是所有UI / CA.我的攻击角度是在setBounds:设置一个符号断点,并且只有在找到NaN值时才会中断。
我对论证传递有一套基本的理解,但我还没有必要的低级别c / objc / asm知识。提前感谢您提供有关如何继续前进的任何提示。
作为参考,这是一个电话的例子
0x382a69: xorps %xmm0, %xmm0
0x382a6c: movaps %xmm0, -0xa8(%ebp)
0x382a73: movl 0xae1a83(%edi), %eax
0x382a79: movl %eax, -0xd0(%ebp)
0x382a7f: movsd -0xa8(%ebp), %xmm0
0x382a87: movsd -0xa0(%ebp), %xmm1
0x382a8f: movsd %xmm1, 0x10(%esp)
0x382a95: movsd %xmm0, 0x8(%esp)
0x382a9b: movl %eax, 0x4(%esp)
0x382a9f: movl %ebx, (%esp)
0x382aa2: calll 0xaff28a ; symbol stub for: objc_msgSend
和setBounds的开头:
QuartzCore`-[CALayer setBounds:]:
0x1b09c7f: pushl %ebp
0x1b09c80: movl %esp, %ebp
0x1b09c82: pushl %ebx
0x1b09c83: pushl %edi
0x1b09c84: pushl %esi
0x1b09c85: subl $0x4c, %esp
0x1b09c88: calll 0x1b09c8d ; -[CALayer setBounds:] + 14
0x1b09c8d: popl %edi
0x1b09c8e: leal 0x10(%ebp), %esi
0x1b09c91: movl 0x8(%ebp), %ebx
0x1b09c94: xorps %xmm0, %xmm0
0x1b09c97: ucomiss 0x18(%ebp), %xmm0
0x1b09c9b: ja 0x1b09ca3 ; -[CALayer setBounds:] + 36