To be very clear, i’m concerned about iOS not mac os x.  I pulled up a crash 
report using xcode tools, and saw no mention of the string output by fatal 
error.  If there is someway after the fact of, on an iPhone or iOS interogating 
the asl_log when you restart your program to glean the error message, i’m all 
ears.


> On Jun 26, 2017, at 10:01 AM, Joe Groff <jgr...@apple.com> wrote:
> 
> 
>> On Jun 23, 2017, at 9:13 PM, David Baraff via swift-users 
>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>> 
>> I realize this is slightly centric to iOS, but it irks me that both Apple’s 
>> crash report logs and popular platforms like PLCrashReporter can do the hard 
>> stuff like give you a stack trace, but are *completely* unable to display 
>> the error message from terminating a program via fatalError(), or the error 
>> message from, e.g. dying with a bad optional.
>> 
>> Is there *any* to intercept the error messages that from fatalError() and 
>> similar like things in swift (bad optionals, invalid array accesses, 
>> assertions)?  I would think that some sort of a “hook” into these standard 
>> error routines would be a good thing.
>> 
>> In my case, if I could simply save that darn error string in a file, i could 
>> pick it up when the app next launches and report it along with the rest of 
>> the info like the stack/signal, etc.
>> 
>> I’ve been looking through the code in stdlib/public/runtime/Errors.cpp but 
>> haven’t found anything promising that lets me jump in there.  In my code, 
>> I’m likely to write things like
>>      guard let x = … else {
>>              fatalError(“Data type has payload <T> but is hooked to UI 
>> control with intrinsic type <U>”)
>>      }
>> 
>> and having that exact string tells me precisely what’s going, far simpler 
>> than a stack trace.
> 
> 
> Fatal error messages already get logged three ways:
> 
> - Printed to the process's stderr;
> - Logged to the system log using asl_log;
> - Set as the crash reason for CrashReporter.
> 
> The crash messages should thus already be in your crash reports somewhere. 
> See 
> https://github.com/jckarter/swift/blob/master/stdlib/public/runtime/Errors.cpp#L168
>  
> <https://github.com/jckarter/swift/blob/master/stdlib/public/runtime/Errors.cpp#L168>
>  and 
> https://github.com/jckarter/swift/blob/master/stdlib/public/runtime/Errors.cpp#L204
>  
> <https://github.com/jckarter/swift/blob/master/stdlib/public/runtime/Errors.cpp#L204>
>  for the relevant runtime source code. cc'ing Greg Parker who probably knows 
> better exactly where these messages end up.
> 
> -Joe

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to