【问题标题】:Unable to set a symbolic breakpoint to some Classes无法为某些类设置符号断点
【发布时间】:2020-06-05 11:25:35
【问题描述】:

我不得不调查何时设置了某个 cookie,但不幸的是,我无法弄清楚只是在代码库中寻找。所以像往常一样,当游戏变得艰难时,我会去设置一个象征性的断点。这一次,无论如何,我没能做到。

特别是,我一直在尝试为 NSHTTPCookieStorage 方法 setCookie: 设置一个符号断点,但无论是从断点导航器还是从调试控制台,我都无法设置它。

例如:

(lldb) br set -F '-[NSHTTPCookieStorage setCookie:]'
Breakpoint 6: no locations (pending).
WARNING:  Unable to resolve breakpoint to any actual locations.

我也尝试设置模块(基础),但没有任何改变。 NSURLSession 方法downloadTaskWithResumeData:completionHandler: 也发生了同样的情况,然后我尝试了其他一些 Foundation 的类,它总是有效,除了 Apple 文档中该组的所有成员,如 NSHTTPCookieStorage 和 NSURLSession。

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

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

【问题讨论】:

    标签: ios objective-c swift debugging lldb


    【解决方案1】:

    在我的情况下,我确实得到了一个解决的 bp:

    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'
    

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

    【讨论】:

    • 也可能是您的应用程序将在运行时加载 CFNetwork,只是尚未加载。在这种情况下,断点将被列为待处理,然后当 CFNetwork 加载时,断点将得到解决。可以使用image list CFNetwork查看是否加载完毕。
    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 2019-01-16
    • 2020-04-28
    相关资源
    最近更新 更多