簡體   English   中英

奇怪的崩潰:NSRangeException與“無用的” stacktrace

[英]Strange crash: NSRangeException with “unhelpful” stacktrace

因此,這是僅在其他人看來發生的崩潰之一,而我只是由於Bugsnag才發現了。

NSRangeException: -[__NSCFString characterAtIndex:]: Range or index out of bounds

到目前為止,一切都很好,只是您的常規柵欄錯誤或類似問題,對吧? 除了stacktrace看起來像:

[appname]:0x0006a399 • [appname]
[appname]:0x00089435 • [appname]
[appname]:0x002629cb • _ZNSt3__16vectorIiNS_9allocatorIiEEE21__push_back_slow_pathIiEEvOT_
[appname]:0x001802b5 • _ZNSt3__16vectorIN7gmscore4base10reffed_ptrINS1_6vector16GLBaseLabelBatchEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE
[appname]:0x0019d115 • _ZNSt3__16vectorIN7gmscore6vector4text15GlyphQuadVertexENS_9allocatorIS4_EEE21__push_back_slow_pathIRKS4_EEvOT_
[appname]:0x0004eb33 • [appname]
[appname]:0x0004eae8 • [appname]

因此,我絕對不知道這是從哪里來的,但是它似乎不是由characterAtIndex:直接在我的代碼中生成的(此外,整個應用程序中只有一個這樣的調用,並且受到了很好的保護)。 它似乎是一個非常核心的C函數,它試圖從索引超出范圍的字符串中讀取內容,但是從這個堆棧跟蹤中,我什至無法開始找出該位置。 有任何想法嗎?

可能是您正在調用系統方法,該系統方法又調用objectAtIndex:。 在調試時,我傾向於在項目中始終有一個異常斷點,因此它將向您顯示導致異常的調用代碼。

創建一個:

  1. 打開斷點窗格。

  2. 在窗格底部創建一個新的斷點

在此處輸入圖片說明

  1. 選擇“添加例外斷點...”

  2. 在下一個屏幕上,保留默認選項,然后單擊“完成”。

在此處輸入圖片說明

再次導致崩潰,並查看它在哪里破壞了您的應用程序。

希望這可以幫助!

您可以發布完整的崩潰報告嗎? 可能還有其他線索。

給定異常+堆棧跟蹤,我懷疑正在發生堆棧損壞,或者異常處理程序的配置有些愚蠢,導致錯誤地報告了堆棧(我之前已經看到過)。

如果您有崩潰報告的集合,請檢查它們之間的共性;

  • 都在同一型號的設備上?

  • ...相同版本的OS?

  • 越獄?

...等等...

像這樣的錯誤通常讓人發瘋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM