Debugging Exceptions in Xcode
Natasha Murashev: Just type po $arg1 into the debug area to get the human-readable version of the error (in this case, the nib is invalid) […] Finally, you can add the po $arg1 command to your...
View ArticleAddress Sanitizer
WWDC 2015 Session 413 (video, PDF): Address Sanitizer is an LLVM tool for C-based languages, that serves the same purpose as Guard Malloc, as it finds memory errors at runtime, however, it has a lot of...
View ArticleShipping an App With App Transport Security
Tim Ekl (tweet): This article is aimed at a different purpose: to look at the different speed bumps that can show up while building an app alongside ATS, and to explain how to get around them. There...
View ArticleType Profiling and Code Coverage Profiling for JavaScript
Saam Barati: Web Inspector now has two great tools designed to make debugging JavaScript programs easier: the Code Coverage Profiler and the Type Profiler. The Code Coverage Profiler visually displays...
View ArticleBitcode Breaks 3rd-Party Crash Reporters
HockeyApp (via Landon Fuller and Andreas Linde): It is currently not possible to support crash reports from builds using Bitcode. When uploading an app to the App Store and leaving the “Bitcode”...
View ArticleMallocNanoZone=1 Makes for Hard Debugging
Gus Mueller: Then it happened again, and I found a pretty reliable way to reproduce it. But again I wasn't running from Xcode and when I launched it from Xcode I couldn't reproduce it. […] So what does...
View ArticleiOS Diagnostics & Usage Data
Joe Caiati: Pre-iOS 8, you could have found this is section under Settings → General → About → Diagnostics & Usage, but now it lives in Settings → Privacy → Diagnostics & Usage. I would liken...
View ArticleThe Depressing Effect of Bug Bounties
Jacob Torrey (via Gwynne Raskind): By artificially deflating the cost of finding and fixing bugs in operation/shipped product through monopolistic means, bug bounties remove the economic incentive to...
View ArticleNot Your Mac, Anymore
Mike Ash: I can’t attach to TextEdit because of system integrity protection? @millenomi: the point of the thing is to prevent software to do damage to the system where a user gave their admin password....
View ArticleThe Unbugged Sessions Part 1
Eloy Durán (tweet): In this post I’ll take you through a debugging session where I reproduce a crash, for which we were receiving a bunch of crash reports, but I was unable to reproduce by just using...
View ArticleLittle Things That Can Make Your Life Easier
Krzysztof Zabłocki: There is much more you can do with [breakpoints], e.g. you can elevate your custom breakpoint to User Breakpoint and have them work in all your projects, why would you do that?...
View ArticleTracking Tasks With Stack Traces in Swift
Matt Gallagher: Instead of using log files to track asynchronous tasks, I prefer to use a structure that I call a “task journal”. […] We’d have a bit more flexibility if we could use the C function...
View ArticleSwift Asserts
Mike Ash (comments): Some people prefer to only have asserts in debug builds, under the theory that it’s good to have checks when debugging, but it’s best not to crash the app out in the real world...
View ArticleOn Flexible Systems
Gerald Jay Sussman (video): Most systems we build work well for the application that they were designed for, but they are brittle in that adapting to even small changes in the problem requires large...
View ArticleA Tale of Two Optimizers
Daniel Jalkut: Today, Apple got back to me with a followup, suggesting rather gently that I may have neglected to disable optimization in my target. Rookie move! The kind of behavior I was seeing in...
View Articlestringdups: Identify Duplicate Strings or Other Objects
stringdups (via David Smith): stringdups examines the content of malloc blocks in the specified target process. For all blocks which have the same content, it shows a line with the number of such...
View ArticleNo More Logs for Missing NSAutoreleasePool
Uli Kusterer: So apparently Apple removed the “object autoreleased with no pool in place” error message. Chris Nebel: Not removed, but disabled by default. Set OBJC_DEBUG_MISSING_POOLS=YES to get it...
View ArticleXcode Memory Graph Debugger Tips
Brent Simmons: Lines between objects have a label. A line represents a reference. Click on the label to see if the reference is strong or weak or unknown and what the source and destination are. Don’t...
View ArticleUndocumented Xcode Sanitizer Settings
Peter Steinberger (tweet): Here’s what I gobbled together based on Google; mostly thanks to WebKit being open source. (I only tested CLANG_ADDRESS_SANITIZER so far, but based on Google the other flags...
View ArticleSierra Log Littering
Daniel Jalkut: Apple has dramatically revamped its standard logging mechanism. Unified Logging, available in macOS 10.12 and iOS 10, replaces various file-based logging approaches with a centralized,...
View Article