无法为某些类设置符号断点

ndP*_*Phz 6 debugging objective-c ios lldb swift

我必须调查某个 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)。

URL加载系统类

我认为这可能与一些安全问题有关,但我还记得我对某些 Keychain 和 SecKey 的符号应用了符号断点。

其他人也有同样的经历吗?我还没有找到任何提到类似内容的文档。

Kam*_*l.S 2

在我的案例中,我确实得到了相同的解决方案:

br set -F '-[NSHTTPCookieStorage setCookie:]' 
Run Code Online (Sandbox Code Playgroud)

命令(旁注b '-[NSHTTPCookieStorage setCookie:]'将起作用)。

在您的情况下,无论出于何种原因,似乎lldb都没有加载。 矿CFNetwork

image lookup -vn  '-[NSHTTPCookieStorage setCookie:]'
Run Code Online (Sandbox Code Playgroud)

产量

1 match found in /Users/myusername/Library/Developer/Xcode/iOS DeviceSupport/12.4.1 (16G102)/Symbols/System/Library/Frameworks/CFNetwork.framework/CFNetwork:
        Address: CFNetwork[0x0000000181478fbc] (CFNetwork.__TEXT.__text + 51832)
        Summary: CFNetwork`-[NSHTTPCookieStorage setCookie:]
         Module: file = "/Users/myusername/Library/Developer/Xcode/iOS DeviceSupport/12.4.1 (16G102)/Symbols/System/Library/Frameworks/CFNetwork.framework/CFNetwork", arch = "arm64"
         Symbol: id = {0x00000af7}, range = [0x00000001b6628fbc-0x00000001b6629020), name="-[NSHTTPCookieStorage setCookie:]"
Run Code Online (Sandbox Code Playgroud)

如果您使用的是真实设备,请尝试

image add '/Users/myusername/Library/Developer/Xcode/iOS DeviceSupport/12.4.1 (16G102)/Symbols/System/Library/Frameworks/CFNetwork.framework/CFNetwork'
Run Code Online (Sandbox Code Playgroud)

(显然是相应 iOS 版本的路径替换^)

如果你在模拟器上尝试

image add '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/CFNetwork.framework/CFNetwork'
Run Code Online (Sandbox Code Playgroud)

如果没有收到错误,请尝试在该点设置符号断点。