Reputation: 54212
I am using Instruments Tool ( Leaks ) to diagnose the leaks, but I don't quite understand how I can backtrack to my codes. Does anyone know how can I further diagnose ?
Using Xcode 4.5 & Profiling on iPad (iOS 4.3.5).
UPDATE: Here is the backtrace :
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
UPDATE : Instruments with Extended Detail. Still not pointing to source. It points to machine code instead.
Upvotes: 0
Views: 372
Reputation: 20088
If you open the extended detail view, you should be able to see the call stack when you select a leak from the detail view. In addition, switching to the call tree view can help you determine where the leaks are occurring in your code. Use the jump bar to switch to the call tree view.
When you switch to the call tree view, you should see a series of checkboxes to the left of the call tree. Selecting the Invert Call Tree and Hide System Libraries checkboxes allow you to find your code in the call tree. Double-clicking one of your functions in the call tree will show you the lines of code that allocate leaked memory.
Upvotes: 1