草庐IT

ios 应用程序被拒绝,需要帮助确定问题

coder 2023-09-27 原文

Apple 今天拒绝了我的应用程序,我尝试按照他们发送的崩溃日志进行操作,但找不到崩溃的根源,我在两部手机上测试了我的应用程序: 1- 苹果手机 4 2- iPhone 5

我在 xcode 模拟器上测试了它: 1-iPad 2-Ipad 视网膜 3-Ipad Retina(64 位)

它对所有这些都很好。

这是他们发给我的

We found that your app crashed on iPad running iOS 7.0.6, which is not in compliance with the App
Store Review Guidelines.

Your app crashed when we:

1) Start the app on a device
2) The app crashes on launch

This occurred when your app was used: 

- On Wi-Fi 
- On cellular network

这是他们寄给我的损失之一

Incident Identifier: F0618233-A16F-4782-8B79-3A2AE5D8BFF6
CrashReporter Key:   1db6124687c1282286f546adfc3c54dc0d8ed7ce
Hardware Model:      xxx
Process:             taptap [266]
Path:                /var/mobile/Applications/.....
Identifier:          x.x.x
Version:             1.0 (1.0)
Code Type:           ARM (Native)
Parent Process:      launchd [1]

Date/Time:           2014-02-22 14:32:19.271 -0800
OS Version:          iOS 7.0.6 (11B651)
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread:  0

Last Exception Backtrace:
(0x2d9bff46 0x3819c6aa 0x2d9bfe88 0x2e347a66 0x8c47c 0x2d982114 0x2d8f6252 0x2e2dbc28 0x301b1f52     
0x3019d4c4 0x3013841a 0x3013771c 0x3019cb38 0x325d5708 0x325d52f2 0x2d98a9da 0x2d98a976 0x2d98914a     
0x2d8f3c22 0x2d8f3a06 0x3019bdd4 0x30197044 0x8fde2 0x386a4ab2)

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3875b1fc __pthread_kill + 8
1   libsystem_pthread.dylib         0x387c4a2e pthread_kill + 54
2   libsystem_c.dylib               0x3870bff8 abort + 72
3   libc++abi.dylib                 0x37a3acd2 abort_message + 70
4   libc++abi.dylib                 0x37a536e0 default_terminate_handler() + 248
5   libobjc.A.dylib                 0x3819c91e _objc_terminate() + 190
6   libc++abi.dylib                 0x37a511c4 std::__terminate(void (*)()) + 76
7   libc++abi.dylib                 0x37a50d28 __cxa_rethrow + 96
8   libobjc.A.dylib                 0x3819c7f2 objc_exception_rethrow + 38
9   CoreFoundation                  0x2d8f3c98 CFRunLoopRunSpecific + 636
10  CoreFoundation                  0x2d8f3a06 CFRunLoopRunInMode + 102
11  UIKit                           0x3019bdd4 -[UIApplication _run] + 756
12  UIKit                           0x30197044 UIApplicationMain + 1132
13  taptap                          0x0008fde2 0x83000 + 52706
14  libdyld.dylib                   0x386a4ab4 start + 0

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib          0x3874883c kevent64 + 24
1   libdispatch.dylib               0x38689210 _dispatch_mgr_invoke + 228
2   libdispatch.dylib               0x38688f96 _dispatch_mgr_thread$VARIANT$mp + 34

Thread 2:
0   libsystem_kernel.dylib          0x3875bc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x387c1dc6 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x387c1c80 start_wqthread + 4

Thread 3:
0   libsystem_kernel.dylib          0x3875bc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x387c1dc6 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x387c1c80 start_wqthread + 4

Thread 4 name:  WebThread
Thread 4:
0   libsystem_kernel.dylib          0x3875afa8 __psynch_mutexwait + 24
1   libsystem_pthread.dylib         0x387c1f0a _pthread_mutex_lock + 302
2   WebCore                         0x35a6f7f0 _WebTryThreadLock(bool) + 104
3   WebCore                         0x35a6f772 WebRunLoopLock(__CFRunLoopObserver*, unsigned long,        
void*) + 42
4   CoreFoundation                  0x2d98b1ca         
__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
5   CoreFoundation                  0x2d988b6c __CFRunLoopDoObservers + 280
6   CoreFoundation                  0x2d988f7c __CFRunLoopRun + 932
7   CoreFoundation                  0x2d8f3c22 CFRunLoopRunSpecific + 518
8   CoreFoundation                  0x2d8f3a06 CFRunLoopRunInMode + 102
9   WebCore                         0x35a6e266 RunWebThread(void*) + 414
10  libsystem_pthread.dylib         0x387c3c1a _pthread_body + 138
11  libsystem_pthread.dylib         0x387c3b8a _pthread_start + 98
12  libsystem_pthread.dylib         0x387c1c8c thread_start + 4

Thread 5:
0   libsystem_kernel.dylib          0x38748a8c mach_msg_trap + 20
1   libsystem_kernel.dylib          0x38748888 mach_msg + 44
2   CoreFoundation                  0x2d98a7be __CFRunLoopServiceMachPort + 150
3   CoreFoundation                  0x2d988ee4 __CFRunLoopRun + 780
4   CoreFoundation                  0x2d8f3c22 CFRunLoopRunSpecific + 518
5   CoreFoundation                  0x2d8f3a06 CFRunLoopRunInMode + 102
6   libAVFAudio.dylib               0x2c976584 GenericRunLoopThread::Entry(void*) + 124
7   libAVFAudio.dylib               0x2c96a99c CAPThread::Entry(CAPThread*) + 176
8   libsystem_pthread.dylib         0x387c3c1a _pthread_body + 138
9   libsystem_pthread.dylib         0x387c3b8a _pthread_start + 98
10  libsystem_pthread.dylib         0x387c1c8c thread_start + 4

Thread 6:
0   libsystem_kernel.dylib          0x3875bc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x387c1dc6 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x387c1c80 start_wqthread + 4

Thread 7 name:  com.apple.NSURLConnectionLoader
Thread 7:
0   libsystem_kernel.dylib          0x38748a8c mach_msg_trap + 20
1   libsystem_kernel.dylib          0x38748888 mach_msg + 44
2   CoreFoundation                  0x2d98a7be __CFRunLoopServiceMachPort + 150
3   CoreFoundation                  0x2d988ee4 __CFRunLoopRun + 780
4   CoreFoundation                  0x2d8f3c22 CFRunLoopRunSpecific + 518
5   CoreFoundation                  0x2d8f3a06 CFRunLoopRunInMode + 102
6   Foundation                      0x2e32e2f2 +[NSURLConnection(Loader) _resourceLoadLoop:] + 314
7   Foundation                      0x2e3a3c82 __NSThread__main__ + 1058
8   libsystem_pthread.dylib         0x387c3c1a _pthread_body + 138
9   libsystem_pthread.dylib         0x387c3b8a _pthread_start + 98
10  libsystem_pthread.dylib         0x387c1c8c thread_start + 4

Thread 8 name:  com.apple.CFSocket.private
Thread 8:
0   libsystem_kernel.dylib          0x3875b440 __select + 20
1   CoreFoundation                  0x2d98e680 __CFSocketManager + 480
2   libsystem_pthread.dylib         0x387c3c1a _pthread_body + 138
3   libsystem_pthread.dylib         0x387c3b8a _pthread_start + 98
4   libsystem_pthread.dylib         0x387c1c8c thread_start + 4

Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000000      r3: 0x00002060
    r4: 0x00000006    r5: 0x3a60618c      r6: 0x00000000      r7: 0x27d80594
    r8: 0x1451e760    r9: 0x00000001     r10: 0x00000000     r11: 0x403e0000
    ip: 0x00000148    sp: 0x27d80588      lr: 0x387c4a33      pc: 0x3875b1fc
  cpsr: 0x00000010

我怎么能找到这个崩溃日志的原因,谢谢

最佳答案

Apple 没有在提供的崩溃报告中提供 Binary Images 部分,这使得找出原因变得比必要的困难得多。如果没有这些信息,就不可能对 Last Exception Backtrace 进行符号化并更自动地找出答案。

崩溃的原因肯定是应用程序内部的异常,而不是因为应用程序主线程阻塞时间太长,因为在那种情况下报告不会显示 Last Exception Backtrace 并且看起来很不一样。但是无论如何都不应该在主线程上使用同步网络请求!

那么如何找到更多关于这个异常的信息。由于 Binary Images 丢失并且系统调用的符号已经被符号化,因此很难找到每个系统框架的地址范围。但是我们通过查看以下行知道应用程序的加载地址:

13  taptap                          0x0008fde2 0x83000 + 52706

所以加载地址是0x83000。现在我们获取 Last Exception Backtrace 地址并搜索可能属于应用程序的地址:

0x2d9bff46 0x3819c6aa 0x2d9bfe88 0x2e347a66 0x8c47c 0x2d982114 0x2d8f6252 0x2e2dbc28 0x301b1f52     
0x3019d4c4 0x3013841a 0x3013771c 0x3019cb38 0x325d5708 0x325d52f2 0x2d98a9da 0x2d98a976 0x2d98914a     
0x2d8f3c22 0x2d8f3a06 0x3019bdd4 0x30197044 0x8fde2 0x386a4ab2

应该属于app的有以下几种:

0x8c47c 0x8fde2

0x8fde2 与主线程中的相同,将符号化为类似的东西

13  taptap                          0x0008fde2 main (main.m:14)

有趣的是 0x8c47c,它在异常中排在倒数第 5 位。要获得此符号,您需要提交给 Apple 的应用程序 dSYM。您可以在管理器 Archives 选项卡中找到它。选择应用程序并选择应用程序的条目。右键单击您用于提交给 Apple 的项目,然后选择 Show in Finder。然后再次单击鼠标右键并选择 Show Package Contents。打开 dSYMs 文件夹。

不知道使用的是哪个 iPad,并且由于缺少 Binary Images 部分,我们也不知道(这将显示使用的架构和 UUID 以验证架构、二进制和 dSYM ).所以它可以是 armv7armv7s。最新的带视网膜的 iPad mini 和 iPad Air 在 32 位模式下使用 armv7s,所有其他 iPad 也使用 armv7s 或 armv7。所以我们必须尝试这两种可能返回相同结果的方法。

现在打开一个终端窗口并输入:

`xcrun atos -arch armv7s -l 0x83000 DragInTheDSYMItemFromTheFinderInHere 0x8c47c`

如果没有意义,则使用相同的方法并将 armv7s 替换为 armv7

这应该会为您提供应用程序中发生异常的类、方法、文件名和行号。我们仍然会遗漏异常原因,因为崩溃报告没有显示,并且由于缺少二进制图像,我们无法真正符号化所有其他地址并使用它来找到更多信息。希望这已经给出了一个想法。

完成后,请使用详细信息更新您的问题。

更新:既然提供了二进制图像,我就能够符号化崩溃报告并获得Last Exception Backtrace 符号。尽管没有应用符号,因为我显然没有 dSYM。

符号化报告可在此处获得:http://pastebin.com/An10dUpi

重要的框架如下

Last Exception Backtrace:
0   CoreFoundation                       0x2d9bff46 __exceptionPreprocess + 126
1   libobjc.A.dylib                      0x3819c6aa objc_exception_throw + 32
2   CoreFoundation                       0x2d9bfe88 +[NSException raise:format:] + 98
3   Foundation                           0x2e347a66 +[NSJSONSerialization JSONObjectWithData:options:error:] + 60
4   taptap                               0x8c47c 0x83000 + 38012

这表明发生崩溃是因为应用程序尝试将给定的 NSData 对象序列化为 json 但未能成功,因为 NSData 对象不是有效的 json字符串。

如上文所述对第 4 行进行符号化时,您将在代码中找到发生这种情况的确切行。

关于ios 应用程序被拒绝,需要帮助确定问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21965059/

有关ios 应用程序被拒绝,需要帮助确定问题的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  3. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  4. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  5. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  6. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  7. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  8. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  9. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  10. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

随机推荐