ERA/Crash Log Viewer - check it out if you haven't!

This is something new in the CIQ 3.1 SDK, and is really useful!

See https://forums.garmin.com/developer/connect-iq/b/news-announcements/posts/exceptional-crash-logging

When one of your app crashes on a user device, the CIQ_LOG file is automatically uploaded to garmin, and using the debug.xml (which is automatically included when you build a .iq for the store) you can easily see the crashes users are having.  It's a summary, so you can see "this is something that happened X times, on these devices, with this firmware", with actual line numbers in a stack trace and not just the PC values!

Be forewarned, that the first time you use it, you may find things that you've never heard about - the app crashes, and there's no bad review or "contact developer" about it. That happened to me just today (I'd updated an app just a couple days back).  I had a crash in an app, and the only way I knew about it, was by looking at the crash log viewer in eclipse, and the bug was easy to find and fix based on the info provided!

  • I'm seeing similar frustrating and confusing reports that I can do nothing about. My backtraces often just point inside a layout resource. No idea how to debug that.

  • I too see the "file not found" ones, and they seem to be when accessing Storage.  Not much that can be done for those.

  • I have two crashes that appear there is not much I can do anything about.  One occurs while trying to read a boolean parameter, and gets reported as an "unexpected type" error.  The other happens when trying to save my global state to the parameters on app exit and reports as either an "unexpected type error" or "file not found" error depending on the device.  The only common thread is It is always when using the new app storage commands for CIQ 2.4+.

  • I am seeing very similar--in my case, I think I'm seeing a higher failure rate on devices with other-than-english localizations, particularly Norwegian ('nob'). Could be a coincidence, but I'm wondering if writing out certain unicode characters to the new Storage subsystem is causing a corruption to the backing file, making subsequent writes fail.

    I have some code out in the wild to test Application.setProperty vs Storage.setValue to see if it's both, or just Storage that is affected.

  • That is an interesting theory and test. Keep us posted.

  • for me, I see it when I'm doing something like saving floats for things like lat/lon so no unicode involved.

  • Same here, only using simple types like ints, strs and bools. I'm just wondering if somehow a use of Unicode elsewhere in the system could be causing this apparent corruption.

    My tests in the wild so far seem to be confirming that Application.setProperty isn't affected, only Storage.

    I'm wondering if there's any downside to just reverting back to that until Storage becomes a more stable base to build on--with perhaps a shim layer to make switching easier. Seriously considering it.

  • Looking back a my crash reports, the crashes occur when reading or writing to the same boolean parameter.  One other observation is the devices reporting the crash also seem to be limited to devices which have been upgraded to 3.1 VM.

  • Excuse the perhaps stupid questions, but I need some help: I see two error messages, which I can neither reproduce on my watches nor in the simulator, there everything works as it should. I also don't know for sure what a message means.

    1.
    Error name: Symbol not found
    Devices: fēnix® 6 Pro / 6 Sapphire: 2.20
    Backtrace: Rez.Watchface.33
    -> Where should I search here? What does "Rez." mean?

    2.
    Error Name: Symbol Not Found Error
    Devices: vivoactive 3: 6:30
    Backtrace: CGMWidgetApp.getInitialView:19
    -> But there is only one standard command and "CGMWidgetView()" correct spelled and working on my devices.

    18 function getInitialView() {
    19      return [ new CGMWidgetView() ];
    20 }


    These are the only errors and they only appear on one device at a time. But each more than 50 times.

  • Cool feature. I didn't know how to get at it cos I didn't see this in eclipse. (I didn't realise that one had to manually update eclipse w/ the "add software" link)

    anyways - I found it ,updated it and found some crashes. But.. based on what i see, I don't know what I can do to replicate it. 

    Seems to be working.. not sure how to address edge conditions.

    Error Name: Unhandled Exception
    Occurrences: 3
    First Occurrence: 2019-10-13
    Last Occurrence: 2019-10-13
    Devices:
    vívoactive® 3: 6.90
    App Versions: 3.0.6
    Languages: spa
    Backtrace:
    UD_Functions.handleSettingsChange:306
    367RunFieldView.initialize:35
    367RunFieldApp.getInitialView:18