![](/img/trans.png)
[英]performSegueWithIdentifier while in URLSession.shared.dataTask(with: url)
[英]URLSession dataTask symbolic breakpoint at specific URL
让我们从找出断点处的instance
指针值开始。 由于在Swift
.resume()
调用中发送了一个Objective-C
selector
,因此我们必须回.resume()
以下实际实现:
objc_msgSend(receiver, selector, arg1, arg2, ...)
无需赘述,我们依靠 MacOS/iOS ABI 指定哪些 CPU 寄存器用于传递参数。 我们对查找receiver instance
指针值的第一个参数特别感兴趣。
私有类__NSCFURLSessionTask
恰好具有以下方法:
- (NSURL*)currentRequest_URL;
@JimIngham 指出了一个惊人的捷径来实现这一点,通用参数同义词是$arg1 $arg2 ...
in lldb
。 (请注意,选择器的arg1 arg2
将分别是lldb
的$arg3 $arg4
)这将其简化为:
po [$arg1 currentRequest_URL]
https://www.google.com
如果x86
32bit
Simulator
对应于低于iPhone 5S
设备,您将使用:
(lldb) x/x $esp+4
0xbff9e050: 0x7874dd70
(lldb) po [0x7874dd70 currentRequest_URL]
https://www.google.com
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.