5

OBI と呼ばれる私のプロジェクトは、Xcode から起動すると正常に動作しますが、.ipaファイルを作成すると、提供されたログでクラッシュします。Mutexプロジェクトには、 、DelayedPointerDeletionManagerまたはという名前のクラスMemoryManagerがないため、この例外がどこから来たのかわかりません。

Thread 0 Crashed:
0   libsystem_pthread.dylib         0x396b7046 _pthread_mutex_check_init + 14
1   libsystem_pthread.dylib         0x396b6e32 _pthread_mutex_lock + 22
2   OBI                             0x02a74f20 Mutex::Lock() (Mutex.cpp:152)
3   OBI                             0x02838930 DelayedPointerDeletionManager::AddPointerToMainThreadDealloc(void*, MemLabelId) (Mutex.h:32)
4   OBI                             0x028384a4 MemoryManager::Deallocate(void*, MemLabelId) (MemoryManager.cpp:1082)
5   OBI                             0x028384e4 operator delete[](void*) (MemoryManager.cpp:114)
6   OBI                             0x01d28010 std::locale::locale<boost::filesystem::detail::utf8_codecvt_facet>(std::locale const&, boost::filesystem::detail::utf8_codecvt_facet*) (locale_classes.h:581)
7   OBI                             0x01d281c4 ___lldb_unnamed_function148423$$OBI + 232
8   dyld                            0x2be5b59e ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) + 174
9   dyld                            0x2be5b6ac ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 16
10  dyld                            0x2be58d34 ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&) + 356
11  dyld                            0x2be58b88 ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 36
12  dyld                            0x2be4fd38 dyld::initializeMainExecutable() + 164
13  dyld                            0x2be52ab4 dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 1748
14  dyld                            0x2be4f22a dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) + 346
15  dyld                            0x2be4f064 _dyld_start + 60

編集、コンソールから数行。

Oct 16 14:43:18 Sergiys-iPad kernel[0] <Debug>: launchd[9526] Container: /private/var/mobile/Applications/AA46736B-6348-42BA-A8F0-DD63DC535AF6 (sandbox)
Oct 16 14:43:19 Sergiys-iPad ReportCrash[9527] <Notice>: ReportCrash acting against PID 9526
Oct 16 14:43:19 Sergiys-iPad ReportCrash[9527] <Notice>: Formulating crash report for process OBI[9526]
Oct 16 14:43:19 Sergiys-iPad com.apple.launchd[1] (UIKitApplication:com.mycompany.OBIQA[0x14dc][9526]) <Warning>: (UIKitApplication:com.mycompany.OBIQA[0x14dc]) Job appears to have crashed: Segmentation fault: 11
Oct 16 14:43:19 Sergiys-iPad com.apple.launchd[1] (UIKitApplication:com.mycompany.OBIQA[0x14dc]) <Notice>: (UIKitApplication:com.mycompany.OBIQA[0x14dc]) Throttling respawn: Will start in 2147483647 seconds
Oct 16 14:43:19 Sergiys-iPad backboardd[28] <Warning>: Application 'UIKitApplication:com.mycompany.OBIQA[0x14dc]' exited abnormally with signal 11: Segmentation fault: 11
Oct 16 14:43:19 Sergiys-iPad SpringBoard[33] <Warning>: Application 'com.mycompany.OBIQA' has failed to launch too many times. Not relaunching.
Oct 16 14:43:19 Sergiys-iPad ReportCrash[9527] <Notice>: Saved crashreport to /var/mobile/Library/Logs/CrashReporter/OBI_2013-10-16-144319_Sergiys-iPad.plist using uid: 0 gid: 0, synthetic_euid: 501 egid: 0

私はどんな助け、または掘るための指示を非常に嬉しく思います

編集 最後に、この例外の原因を見つけました。ビルド設定のオプションです。symbol striping変更した後、all symbolsすべてdebug symbolsがうまくいきます。

4

3 に答える 3

4

これは、iOS がクラスをメモリにロードするときに、ダイナミック ローダーでクラッシュします。このプロセスの一部は、メソッドを実装するすべてのクラスで +load を呼び出すことです。

1 つの可能性は、+load であまりにも多くの作業を行っていて、「時間内に起動できませんでした」というメッセージが表示されて殺されていることです。完全なクラッシュ ログを提供すると、これが該当するかどうかがわかります。

于 2014-06-10T01:00:14.820 に答える
0

ImageLoader は、コード片 (外部フレームワーク、ライブラリ) の読み込みにリンクされています。これらすべてがバイナリによって「表示可能」であることを確認する必要があります。XCodeで構築すると、すべてを同じフォルダーに配置できるため、パスの問題はありませんが、特にサードパーティのフレームワークを参照している場合は、メインの実行可能ファイルでそれらが「見える」ようにする必要があります。コンソールは何かを吐き出しますか?

于 2013-10-16T11:51:00.637 に答える