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

6
我必须调查某个cookie何时被设置,但不幸的是,仅靠查看代码库,我无法弄清楚。所以像往常一样,当问题变得棘手时,我会去设置一个符号断点。但这一次,出乎意料地,我无法设置成功。
具体来说,我一直在尝试为NSHTTPCookieStorage方法setCookie:设置符号断点,但是无论是从断点导航器还是从调试控制台,我都无法成功设置它。
例如:
(lldb) br set -F '-[NSHTTPCookieStorage setCookie:]'
Breakpoint 6: no locations (pending).
WARNING:  Unable to resolve breakpoint to any actual locations.

我还尝试设置模块(Foundation),但没有变化。同样的情况也出现在NSURLSession方法downloadTaskWithResumeData:completionHandler:上。然后我尝试使用其他Foundation类,总是有效的,除了那些在苹果文档中作为NSHTTPCookieStorage和NSURLSession一组的类。

URL Loading System Classes

我认为这可能与某些安全问题有关,但我也记得我对一些Keychain和SecKey的符号应用了一个符号断点。
还有其他人有同样的经历吗?我没有找到任何类似的文件中提到过。
1个回答

2

我在同样的情况下使用以下方法,成功解决了血压问题:

br set -F '-[NSHTTPCookieStorage setCookie:]' 

命令(附注:b '-[NSHTTPCookieStorage setCookie:]'也可以工作)。

看起来在你的情况下,由于某种原因,lldb没有加载CFNetwork
我的情况不是这样的。

image lookup -vn  '-[NSHTTPCookieStorage setCookie:]'

产量
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:]"

如果您正在使用真实设备,请尝试:

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

(显然路径应替换为适用的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'

如果没有出现错误,那么请尝试在该点设置您的符号断点。

1
也有可能是你的应用程序在运行时将要加载CFNetwork,只是它还没有加载。在这种情况下,断点将被列为待定状态,然后当CFNetwork加载时,断点将得到解决。你可以使用“image list CFNetwork”来查看它是否已经被加载。 - Jim Ingham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接