gpt4 book ai didi

xcode - 如何在 Xcode 调试导航选项卡中启用网络调试

转载 作者:行者123 更新时间:2023-12-05 07:14:13 24 4
gpt4 key购买 nike

我正在执行网络操作,但调试导航器没有显示任何网络信息。代码很简单,可以按预期工作例如这个简单的代码下载了一个 300 MB 的文件。大约需要 2-3 分钟,但网络保持在 0 KB/s

let urlString = "https://...."

let url = URL(string: urlString)
let dt = URLSession.shared.downloadTask(with: url!) { (url2, response, error) in
print("completed with \(url2)")
}
dt.resume()

按预期收到此消息:

completed with Optional(file:///var/folders/5d/mc_q976d5h94zl38kr1zc4ym0000gn/T/CFNetworkDownload_jUr0fl.tmp)

enter image description here

enter image description here

磁盘调试有效并按预期显示下载的文件大小

enter image description here

最佳答案

简而言之,即使是 Xcode 12.5.1 和 Xcode 13(测试版 2),我发现 Xcode 中报告的网络事件也不可靠。

一些观察:

  1. 我收到不一致的结果。

    例如,这是一个动画 gif,显示下载进度:

    enter image description here

    有趣的是,在下载过程中,“总数”会在下载过程中重置。

    在 Instruments 中(使用 os_signpost 和“Points of Interest”来准确识别下载开始和完成的位置),我可以看到下载,但进度是零星的:

    enter image description here

  2. 就个人而言,要监控网络事件,我会使用外部工具,例如 Charles ProxyWireshark , 更可靠:

    enter image description here

    这是对网络接口(interface)本身的监控,从等式中消除了 Xcode。

    (顺便说一句,在与自定义 Web 服务集成时,这些工具非常有用,因为您可以看到原始请求和响应,这使得调试网络代码变得更加容易。)

  3. 有趣的是,当我在 macOS 上通过 Charles 路由我的 iPhone 网络事件时,Xcode 网络事件结果突然正确了:

    enter image description here

    和:

    enter image description here

    但是当我停止通过 Charles 路由网络事件时,我得到了上面的原始行为。

  4. 如果您没有看到任何网络事件,请确保您的网络请求确实在执行。仅仅因为你得到了一个响应并不意味着它通过网络获取了它:URLSession 将透明地使用 URLCache,如果可以的话,从缓存中检索 Assets 。

    要重置应用缓存,您可以从设备中删除应用并重新安装(从而删除任何缓存的响应),或者,仅出于诊断目的,您可以考虑以编程方式暂时关闭缓存:

    let url = URL(string: urlString)!
    var request = URLRequest(url: url)
    request.cachePolicy = .reloadIgnoringLocalAndRemoteCacheData

    let task = URLSession.shared.downloadTask(with: request) { location, response, error in
    ...
    }
    task.resume()

关于xcode - 如何在 Xcode 调试导航选项卡中启用网络调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59967825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com