You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定位Task错误码-1002的日志输出来源?

定位iOS中Task .错误码-1002日志来源的方法

我遇到大量Task <A3E18896-7B51-4481-A373-6C52DDD8C3BF>.<193>类日志报错误码-1002,尝试排查来源却毫无头绪:曾怀疑图片加载失败但已排除;已知-1002是NSURLConnection相关错误,但本次日志未提及该组件,此前遇到该错误时日志会关联它。示例日志如下:

2018-05-18 14:59:38.406606-0600 MyApp[9635:2490206] Task <A3E18896-7B51-4481-A373-6C52DDD8C3BF>.<193> finished with error - code: -1002 
2018-05-18 14:59:38.406921-0600 MyApp[9635:2490206] Task <D0CD9879-1FF8-4514-9DE7-2E4EB6492882>.<194> finished with error - code: -1002 
2018-05-18 14:59:38.461969-0600 MyApp[9635:2490208] Task <D784F57A-8015-42E9-AC6B-B43B77344113>.<195> finished with error - code: -1002 

请问能否通过断点定位该日志输出?我尝试过创建符号断点,但不知该设置什么符号。

别担心,这些Task日志其实是NSURLSession输出的(iOS 9之后NSURLConnection被底层封装进NSURLSession了,所以日志里不会直接显示NSURLConnection),给你几个精准的断点设置方法:

  • 首选:跟踪NSURLSession任务错误回调
    打开Xcode的Breakpoint Navigator(快捷键⌘+8),点击左下角的+号选择「Symbolic Breakpoint」,输入符号:

    -[NSURLSessionTask taskDidCompleteWithError:]
    

    这个方法是NSURLSession任务完成且携带错误时的核心回调,系统输出那些Task错误日志前一定会调用它。你还可以给断点加个Action:选择「Log Message」,输入Error details: %@,然后在变量里选$arg3(也就是错误对象参数),再勾选「Automatically continue after evaluating actions」,这样程序不会中断,还能直接看到更详细的错误信息。

  • 备选:跟踪CFNetwork的日志输出函数
    如果上面的断点没触发,试试底层的CFNetwork日志符号:

    _CFNetworkLog
    

    这是负责输出这类网络日志的底层函数,设置断点后,每次输出Task错误日志时都会停下,此时查看调用栈就能找到你App里发起请求的代码位置。

  • 进阶:过滤特定错误码
    为了避免无关断点干扰,你可以给断点加条件:在断点的「Condition」里输入

    (int)[(NSError *)$arg3 code] == -1002
    

    这样只有错误码是-1002的时候才会触发断点,效率更高。

当断点触发时,切换到Debug Navigator(⌘+7)查看调用栈,往上找带有你App名称的代码层,就能精准定位到发起这个出错请求的业务代码了。

内容的提问来源于stack exchange,提问作者YichenBman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:37:46