我必须调查某个 cookie 何时被设置,但不幸的是,我无法仅在代码库中查找。所以像往常一样,当比赛变得艰难时,我会去设置一个象征性的断点。这一次,尽管困难重重,我还是没能做到。
特别是,我一直在尝试为 NSHTTPCookieStorage 方法setCookie:设置符号断点,无论是从断点导航器还是从调试控制台,我都无法设置它。
例如:
(lldb) br set -F '-[NSHTTPCookieStorage setCookie:]'
Breakpoint 6: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
Run Code Online (Sandbox Code Playgroud)
我也尝试过设置模块(基础),但没有任何改变。同样的情况也发生在 NSURLSession 方法downloadTaskWithResumeData:completionHandler:然后我尝试使用其他一些 Foundation 的类,它总是有效,除了 Apple 文档中属于该组的所有人员(如 NSHTTPCookieStorage 和 NSURLSession)。
我认为这可能与一些安全问题有关,但我还记得我对某些 Keychain 和 SecKey 的符号应用了符号断点。
其他人也有同样的经历吗?我还没有找到任何提到类似内容的文档。
老实说,我不知道是否可以解决我的问题,但我想在Swift中捕获上下文切换时的情况。
我正在想象一个需要很长时间才能完成的功能,例如在远程服务器上执行写操作,并且我在考虑是否有办法了解何时(至少在哪一行)执行该任务的线程正在执行上下文切换,因为必须执行另一个等待很长时间的任务。
抱歉,如果您觉得这是一个愚蠢的问题,或者在尝试解释以上内容时我出错了
编辑:
我说的是调度程序自动请求的上下文切换。。因此,再次想像一下,我们处于这个长函数的中间,该函数执行大量操作,调度程序为此任务分配了几秒钟,例如10秒钟。为了使其完整。如果进程用完了时间并且没有结束任务,它将被挂起,例如线程将执行另一个进程的另一个任务。结束时,调度程序可能会考虑对挂起的作业进行另一次尝试,并且将从挂起的位置开始继续执行(因此将从PC寄存器中读取该值并继续进行)