0

Instruments Tool ( Leaks ) を使用してリークを診断していますが、コードに戻る方法がよくわかりません。さらに診断する方法を知っている人はいますか?

iPad (iOS 4.3.5) での Xcode 4.5 とプロファイリングの使用。

更新: バックトレースは次のとおりです。

thread #4: tid = 0x3203, 0x35dffd7a libicucore.A.dylib`utext_hasMetaData + 546, stop reason = EXC_BAD_ACCESS (code=2, address=0x0)
    frame #0: 0x35dffd7a libicucore.A.dylib`utext_hasMetaData + 546
    frame #1: 0x003c17d0
    frame #2: 0x35da6746 libicucore.A.dylib`icu::RuleBasedBreakIterator::handleNext(icu::RBBIStateTable const*) + 806
    frame #3: 0x35da6406 libicucore.A.dylib`icu::RuleBasedBreakIterator::next() + 82
    frame #4: 0x35da5cde libicucore.A.dylib`icu::RuleBasedBreakIterator::following(int) + 218
    frame #5: 0x35db0538 libicucore.A.dylib`ubrk_following + 8
    frame #6: 0x32bb0bc8 WebCore`WebCore::textBreakFollowing(WebCore::TextBreakIterator*, int) + 8
    frame #7: 0x32b9baee WebCore`WebCore::nextBreakablePosition(unsigned short const*, int, int, bool) + 270
    frame #8: 0x32bd0dc8 WebCore`WebCore::RenderBlock::findNextLineBreak(WebCore::BidiResolver<WebCore::InlineIterator, WebCore::BidiRun>&, bool, bool&, bool&, bool&, WebCore::EClear*) + 6920
    frame #9: 0x32b8ce02 WebCore`WebCore::RenderBlock::layoutInlineChildren(bool, int&, int&) + 1922
    frame #10: 0x32b8a1ae WebCore`WebCore::RenderBlock::layoutBlock(bool) + 690
    frame #11: 0x32b897c2 WebCore`WebCore::RenderBlock::layout() + 26
    frame #12: 0x32b8b956 WebCore`WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&, int&, int&) + 414
    frame #13: 0x32b8b24c WebCore`WebCore::RenderBlock::layoutBlockChildren(bool, int&) + 428
    frame #14: 0x32b8a1bc WebCore`WebCore::RenderBlock::layoutBlock(bool) + 704
    frame #15: 0x32b897c2 WebCore`WebCore::RenderBlock::layout() + 26
    frame #16: 0x32b8b956 WebCore`WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&, int&, int&) + 414
    frame #17: 0x32b8b24c WebCore`WebCore::RenderBlock::layoutBlockChildren(bool, int&) + 428
    frame #18: 0x32b8a1bc WebCore`WebCore::RenderBlock::layoutBlock(bool) + 704
    frame #19: 0x32b897c2 WebCore`WebCore::RenderBlock::layout() + 26
    frame #20: 0x32b8b956 WebCore`WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&, int&, int&) + 414
    frame #21: 0x32b8b24c WebCore`WebCore::RenderBlock::layoutBlockChildren(bool, int&) + 428
    frame #22: 0x32b8a1bc WebCore`WebCore::RenderBlock::layoutBlock(bool) + 704
    frame #23: 0x32b897c2 WebCore`WebCore::RenderBlock::layout() + 26
    frame #24: 0x32b8b956 WebCore`WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&, int&, int&) + 414
    frame #25: 0x32b8b24c WebCore`WebCore::RenderBlock::layoutBlockChildren(bool, int&) + 428
    frame #26: 0x32b8a1bc WebCore`WebCore::RenderBlock::layoutBlock(bool) + 704
    frame #27: 0x32b897c2 WebCore`WebCore::RenderBlock::layout() + 26
    frame #28: 0x32b8974e WebCore`WebCore::RenderView::layout() + 334
    frame #29: 0x32b85cba WebCore`WebCore::FrameView::layout(bool) + 1486
    frame #30: 0x32b82c12 WebCore`WebCore::Document::implicitClose() + 794
    frame #31: 0x32b828f6 WebCore`WebCore::FrameLoader::checkCallImplicitClose() + 86
    frame #32: 0x32b827fe WebCore`WebCore::FrameLoader::checkCompleted() + 134
    frame #33: 0x32b82380 WebCore`WebCore::FrameLoader::finishedParsing() + 64

リークのスクリーンショット

更新: 詳細が拡張された楽器。まだソースを指していません。代わりにマシンコードを指しています。

拡張詳細あり

4

1 に答える 1

1

拡張詳細ビューを開くと、詳細ビ​​ューからリークを選択したときにコールスタックを確認できるはずです。さらに、コールツリービューに切り替えると、コードのどこでリークが発生しているかを判断するのに役立ちます。ジャンプバーを使用して、コールツリービューに切り替えます。

コールツリービューに切り替えると、コールツリーの左側に一連のチェックボックスが表示されます。[コールツリーを反転]および[システムライブラリを非表示]チェックボックスを選択すると、コールツリーでコードを見つけることができます。呼び出しツリーで関数の1つをダブルクリックすると、リークされたメモリを割り当てるコード行が表示されます。

于 2012-11-29T19:29:48.193 に答える