【问题标题】:Sentry: Event is missing number lines in stack traceSentry:事件在堆栈跟踪中缺少数字行
【发布时间】:2021-08-06 16:06:27
【问题描述】:

我正在使用 Sentry 在我的应用程序中记录错误。一般功能可以正常工作,但是它在堆栈跟踪中不包含数字行,因此很难识别问题的根源。 通常它会显示方法名称,但如果它是来自另一个线程中 Alamofire 请求的一些响应,它会变得更加困难。示例事件:

OS Version: iOS 14.1 (19H114)
Report Version: 104

Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: ILL_NOOP at 0x000000010b1edc34
Crashed Thread: 0

Application Specific Information:
Fatal error > <appName>/IssuesViewController+Sync.swift > Unexpectedly found nil while unwrapping an Optional value

Thread 0 Crashed:
0   libswiftCore.dylib              0x10b1edc34         _assertionFailure
1   libswiftCore.dylib              0x10b1ed786         _assertionFailure
2   libswiftCore.dylib              0x10b1ed462         _assertionFailure
3   libswiftCore.dylib              0x10b1ed0e0         _assertionFailure
4   <appName>                       0x20976243e         IssuesViewController.manualSync
5   <appName>                       0x2097622a3         IssuesViewController.didGetAccounts
6   <appName>                       0x2095e2223         FMDBManager.saveAllAccounts
7   <appName>                       0x209761e3f         IssuesViewController.didGetAccounts
8   <appName>                       0x209581038         RequestService.getAllAccounts
9   Alamofire                       0x10a74bd61         DataRequest.response<T>
10  Alamofire                       0x10a705830         @callee_guaranteed
11  libdispatch.dylib               0xfffe4020835a      _dispatch_call_block_and_release
12  libdispatch.dylib               0xfffe40209533      _dispatch_client_callout
13  libdispatch.dylib               0xfffe40216010      _dispatch_main_queue_callback_4CF
14  CoreFoundation                  0xfffe406d1275      __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
15  CoreFoundation                  0xfffe406cbb05      __CFRunLoopRun
16  CoreFoundation                  0xfffe406cab9d      CFRunLoopRunSpecific
17  GraphicsServices                0xfffe56f23db2      GSEventRunModal
18  UIKitCore                       0xfffe480f040e      -[UIApplication _run]
19  UIKitCore                       0xfffe480f531f      UIApplicationMain
20  <appName>                       0x20985d2eb         main
21  libdyld.dylib                   0xfffe404ad408      start

当前配置:

SentrySDK.start(options: [
    "dsn": dsn,
    "environment": environment,
    "debug": false
])

我也试过添加

"attach-stacktrace": true

到选项,但它默认启用,所以这里没有区别。

错误捕获(实际上启用了调试选项,它会在控制台中打印并包含数字行):

SentrySDK.capture(error: error) // as NSError

目前使用 Sentry-Cocoa 版本 7.0.0。 我应该以其他方式配置我的 SentrySDK 配置以处理行号吗?

【问题讨论】:

    标签: swift sentry printstacktrace


    【解决方案1】:

    请确保您为每个版本构建upload your dSYMs(调试符号),以便 Sentry 可以解读 Apple 的崩溃日志以显示崩溃的函数、文件名和行号。

    attachStacktrace 默认启用。此标志控制是否要为捕获的每个事件附加堆栈跟踪。对于异常和崩溃,SDK 始终附加堆栈跟踪。您无需手动启用此功能。

    我建议使用以下start 方法。它为您提供代码补全。

    SentrySDK.start { options in
        options.dsn = "YOUR_DSN"
        options.debug = true
    }
    

    【讨论】:

    • 感谢您的回复。即使使用登录的用户帐户,我也已经配置了 DSN,所有信息都正确收集。附加的示例事件是从 Sentry Web 应用程序复制的,我只是切换到 Raw 显示以便更舒适的身体在这里复制。在控制台日志中,我正确地看到了带有数字行的类名,但在 Sentry 上,由于某种原因没有显示数字行。我需要它来使用 Sentry Web 应用程序显示它,因为我需要获得由某些不同用户引起的错误的确切位置。
    • 您是否尝试将 dSYM 上传到 Sentry?
    • 尸体被埋在那里!那是我丢失的一个,在生成 dSYM 文件并发送到 Sentry 后,它开始显示数字行,谢谢!所以请将此作为答案,我可以将其标记为已接受。顺便说一句,还有一个问题 - 这是否意味着我要发送的每个版本都需要通过 sentry-cli 更新?当用户不立即更新他们的应用版本时,这听起来有点不舒服和不方便。
    • 您不需要更新 dSYM,相反,您需要为每个发布版本上传新的 dSYM。 dSYM 会随着每次构建而变化,因此我们会在每个版本中跟踪它们。
    猜你喜欢
    • 2021-01-03
    • 1970-01-01
    • 2013-03-02
    • 2020-05-16
    • 2021-08-16
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多