debugging questions

1) If i find a message like this in CIQ_LOG.TXT, is there a way to find out what symbol is at issue. This occurred with a a program i side loaded.
Unfortunately the simulator cannot help as this relates displaying the watch face while an app is running, and the simulator only simulates the app itself.
ERROR: Symbol Not Found Error
DETAILS: Failed invoking <symbol>

2) in attempting to solve above i noticed in the /bin folder of my application these files.
xxx.prg
xxx.prg.debug.xml
xxx-settings.json

It appears they are created when you run the simulator. Are they relevant when side loading?
I attempted putting them all in the watch but did not seem to have any effect on the debug symbol.
Not sure if the settings file was used in any way by the watch or not.
Are the later 2 files only relevant for the simulator?

3) When using the debugger, i can send app settings using the 'app settings editor'. Puzzled about where those are stored. They do seem to persist after exiting eclipse. Perhaps not a big concern, but just trying to learn better understand settings.

4)
WARNING: Unable to close bike power sensor
I have searches and found occasional reference to this error.
Hints that perhaps it is an epix bug/issue.
I am not using a power sensor at all, but am using the heart rate sensor belt.
In the past i saw this message attributed to some other app, but it seems to be appearing now associated with my STORE_ID, same one associated with the error above #1.

I have this in app.onStop which might be relevant:
Snsr.enableSensorEvents(null); // enables sensor events at 1Hz. Null parameter to turn it off.
var snsArray = Snsr.setEnabledSensors( [] ); // turns off sensors
  • 1) If i find a message like this in CIQ_LOG.TXT, is there a way to find out what symbol is at issue. This occurred with a a program i side loaded.
    Unfortunately the simulator cannot help as this relates displaying the watch face while an app is running, and the simulator only simulates the app itself.
    ERROR: Symbol Not Found Error
    DETAILS: Failed invoking <symbol>

    I can only respond to your Q1.
    Are you un-checking "Build release version of project" in the Build for Device Wizard dialog? That should give you a line number for the crash.
    If you still get "DETAILS: Failed invoking <symbol>" it means that you are accessing a method on a null variable.
    Like myVariable .size() when myVariable is null.
  • 1) If i find a message like this in CIQ_LOG.TXT, is there a way to find out what symbol is at issue. This occurred with a a program i side loaded.
    Unfortunately the simulator cannot help as this relates displaying the watch face while an app is running, and the simulator only simulates the app itself.
    ERROR: Symbol Not Found Error
    DETAILS: Failed invoking <symbol>

    for this, if you side load a debug build to a watch, you'll get much more info. If it's in the app store and is a user, you might be able to email them a debug build sideload.
    2) in attempting to solve above i noticed in the /bin folder of my application these files.
    xxx.prg
    xxx.prg.debug.xml
    xxx-settings.json

    It appears they are created when you run the simulator. Are they relevant when side loading?
    I attempted putting them all in the watch but did not seem to have any effect on the debug symbol.
    Not sure if the settings file was used in any way by the watch or not.
    Are the later 2 files only relevant for the simulator?


    Really not much that relates to what's on the watch, only the sim. The .prg is the debug build used by the sim, the xml is used for debug symbols in the sim if I recall, and the .json is used in the "app settings editor" in eclipse.

    3) When using the debugger, i can send app settings using the 'app settings editor'. Puzzled about where those are stored. They do seem to persist after exiting eclipse. Perhaps not a big concern, but just trying to learn better understand settings.


    Not specifically tried, but it should work. When do you read settings? If you're in the debugger, you'll need to run your code that reads them.

    4)
    WARNING: Unable to close bike power sensor
    I have searches and found occasional reference to this error.
    Hints that perhaps it is an epix bug/issue.
    I am not using a power sensor at all, but am using the heart rate sensor belt.
    In the past i saw this message attributed to some other app, but it seems to be appearing now associated with my STORE_ID, same one associated with the error above #1.

    I have this in app.onStop which might be relevant:
    Snsr.enableSensorEvents(null); // enables sensor events at 1Hz. Null parameter to turn it off.
    var snsArray = Snsr.setEnabledSensors( [] ); // turns off sensors


    The epix is kind of weird.. It's not really been updated in a long time, still CIQ 1.2, etc... You might just be seeing odd and specific to the epix... And you'll may not see a fix in the FW for a long time...
  • thanks guys.

    Yes i believe it is a debug build. the 'build release version of project' is unchecked.
    Thanks for mentioning that option. The way eclipse appears to me that option is never visible, unless i use the scroll bar to scroll down to more options, so i had not noticed it or the scroll bar before.
    So in the end i presume i have only ever done debug builds.

    So the WARNING: Unable to close bike power sensor could be a red hearing - i have seen this in the log before - i would agree that might be an idiosyncrasy of the epix.

    The interesting thing is that the error log seems to reference the store ID of whatever watch face i use. If i change the watch face, i get the same errors, but different store ID.
    Also if i use the 'digital' watch face, i think that is the default one, everything is fine. If i use alternate watch faces like 'actiface', or 'summer sunset', then i have the problem described.

    WARNING: Unable to close bike power sensor
    STORE_ID: 7ef071c34a144eb3aca9e3a531262711

    ERROR: Symbol Not Found Error
    DETAILS: Failed invoking <symbol>
    STORE_ID: 7ef071c34a144eb3aca9e3a531262711
    WARNING: Error in timer callback
    STORE_ID: 7ef071c34a144eb3aca9e3a531262711

    WARNING: Unable to close bike power sensor
    STORE_ID: 7ef071c34a144eb3aca9e3a531262711

    I think the core of my problem relates to having an app running, with timer/activity running. When i go to view the watch face, leaving the app running that is ok. However when i return to the running app something is messed up in the timer callback. I am presuming that any classes i have defined remain in memory and are not re-instanced when display returns to the app. Likewise i wonder about timer management in this situation. Perhaps some watch faces takes over the timer from my app - but perhaps not the 'digital' watch face - maybe it is a different type of internal developed face. Is there a problem with leaving the timer running while another watch face is on screen?

    I just gave a go with the sdk 2.3.0.beta1 hoping it might give more info, but was the same. My goal anyhow is to target lesser SDK versions.
  • thanks for the tips guys.

    I believe i have only ever done debug builds. But thanks for mentioning where the setting for that is.
    In eclipse, that option is eclipsed and not visible, unless i use a scroll bar i had not noticed before.
    'Build release version...' is unchecked.

    So some more details. If i use the standard 'digital' watch face, there is no problems with the timer callback
    as below. If i use some watch faces like 'actiface' or 'Summer Sunset' then the problem occurs, and the
    STOREID is not mine but instead the ID for the watch face i am currently using.

    My app has a timer running, and an activity recording. So it appears that maybe by switching to the watchface,
    the my timer callback is perhaps messed up.

    I am correct to assume that one my app is running and classes are instantiated, they will remain in memory and
    not be re-instantiated when i switch between my app and a watch face?

    I am not sure about how many timers exist and how they are managed if for example an app is using a timer and
    also a watch face is. Do they conflict with each other? It does appear that with the 'digital' watch face,
    my timer does continue to run correctly including the callback.

    I just loaded up the sdk 2.3.0.beta1 SDK and tried that hoping it might be able to provide the name of <symbol> but got the same error log - no difference.




    4) understood about epix limitations and that these 'bike power sensor' messages are some wierd thing they do.
    I see other posts regarding that error associated with the Epix.

    Below is typical of what i find in CIQ_LOG.TXT...
    WARNING: Unable to close bike power sensor
    STORE_ID: cc0afcb810234d6db9cc936027fe1cba

    ERROR: Symbol Not Found Error
    DETAILS: Failed invoking <symbol>
    STORE_ID: cc0afcb810234d6db9cc936027fe1cba
    WARNING: Error in timer callback
    STORE_ID: cc0afcb810234d6db9cc936027fe1cba
  • if it's got a store ID, it's not a debug build.

    the checkbox in the "build for device wizard" only applies to what you're building right then, and is often for a sideload or something you can email as a sideload.

    if you put a sideload on the watch, the store ID would be zero. Another thing, is you may be looking at things from another app in ciq_log.txt - all CIQ apps share that file. Delete the file for a clean start.
  • Yes correct, the watch faces are ones from the store, not my apps and i presume not at fault, and not debug build.
    And i do clear the logs each run.

    This issue is that the error messages and error are occurring as i described when i use my app which i freshly built, debug build, and sideloaded.
    The error messages appear to be related to my code however they show in the log associated with the watch faces.
    My app is not working correctly after i have viewed the watch face and returned, it behaves as the timer is not going, but perhaps the timer callback is messed.
    It is my app then then shows the exclamation mark on the screen as it crashes when i try to exit.
    My own app log has lots of info and timestamps to the second, however the CIQ_LOG does not include any time info - so not really easy to relate to what is happening/when.
    The concern is that somehow there is an interaction between my app and and certain watch faces, and likely the timers for all these.
    I expect there is something wrong in how i am doing things, since the issue occurs with 2 unrelated watch faces from the store, and does not occur with the 'digital' watch face which i believe is standard from garmin.
  • Ok, well i compiled the 'timer' sample and loaded it on the Epix. It ran fine.

    Then i changed the watch face to one from the store.
    While the timer app is running i long press the lower right button which
    causes Ui.KEY_CLOCK and brings the current watch face on screen.

    I then press button for the onBack function to leave the watch face and return to the running app.
    The timer app is displayed but no longer any updates to the counters.

    Repeat same test using 'digital' watch face, there is no issue and the timer app continues to count in the background
    and when you return to the app. I have tried this with about 3 watch faces from the store, and with all of them
    this issue appears.

    The reason to do all this is to allow the app to continue to run and gather data, while allowing the user
    to view time or other screens temporarily and then return to the app which continues running all along.
  • Per my last post here, i am having this same issue still in my app.
    I used the 'timer' sample as above to see if it was a problem with my app. But it seems the issue also occurs with the sample app.

    Could it be a bug in the watch face causing OTHER apps to fail like this?
    Here is from CIQ_LOG.txt, indicating and error in the actiface watch face.
    Could it somehow be killing the timer that was set up by the app.
    Perhaps when the app leaves the screen(still running), while the user looks at the watch face?

    ERROR: Symbol Not Found Error
    DETAILS: Failed invoking <symbol>
    STORE_ID: 7ef071c34a144eb3aca9e3a531262711

    Is there something that prevents an app and watch face from fighting over the same timer? or at least messing the associated callback?
  • If you have a re-producible test case, i.e. using the timer sample app and any CIQ watch face available from the app store (or a select number), then I'd suggest logging this into the bugs forum so it can be formally logged and investigated. CIQ apps should not interfere with each other and it sounds like this is happening here.
  • It is very reproduceable on my EPIX, but some have suggested that it is an epix issue. However i now have someone using an app i developed, and reporting very similar symptoms, using a vivoactive HR with current firmware. I will attempt to find someone to test it on that watch or other watch that is more up to date than mine.

    For now here are the steps to reproduce in case anyone is interested...

    1)
    - use latest SDK 2.3.5
    - build for device, sample, timer
    - sideload to epix, Firmware: v3.40.0.0
    - watchface is Actiface
    https://apps.garmin.com/en-US/apps/7ef071c3-4a14-4eb3-aca9-e3a531262711. actiface
    - start 'timer' app, note it is counting
    - long press lower left button 'down' to get to the watch face
    - press right button 'back' to return to the 'timer' app, note that it is not counting
    - exit the app using 'back' button, connnect to computer to see this log, then clear log for the next test
    - see log below from /Garmin/Apps/Logs/CIQ_LOG.TXT
    WARNING: Unable to close bike power sensor
    STORE_ID: 7ef071c34a144eb3aca9e3a531262711

    ERROR: Symbol Not Found Error
    DETAILS: Failed invoking <symbol>
    STORE_ID: 7ef071c34a144eb3aca9e3a531262711
    WARNING: Error in timer callback
    STORE_ID: 7ef071c34a144eb3aca9e3a531262711

    WARNING: Unable to close bike power sensor
    STORE_ID: 7ef071c34a144eb3aca9e3a531262711

    WARNING: Unable to close bike power sensor
    STORE_ID: 00000000000000000000000000000000

    WARNING: Unable to close bike power sensor
    STORE_ID: 7ef071c34a144eb3aca9e3a531262711

    2)
    - repeat test, watchface is build in 'digital'
    - when you return to the app, it continues to count ok

    3)
    - repeat test, watchface is fringe
    https://apps.garmin.com/en-CA/apps/dc5937e8-dc2e-41e1-8f4d-7a9841336f35

    WARNING: Unable to close bike power sensor
    STORE_ID: dc5937e8dc2e41e18f4d7a9841336f35

    WARNING: Unable to close bike power sensor
    STORE_ID: dc5937e8dc2e41e18f4d7a9841336f35

    ERROR: Symbol Not Found Error
    DETAILS: Failed invoking <symbol>
    STORE_ID: dc5937e8dc2e41e18f4d7a9841336f35
    WARNING: Error in timer callback
    STORE_ID: dc5937e8dc2e41e18f4d7a9841336f35

    WARNING: Unable to close bike power sensor
    STORE_ID: dc5937e8dc2e41e18f4d7a9841336f35

    WARNING: Unable to close bike power sensor
    STORE_ID: 00000000000000000000000000000000

    WARNING: Unable to close bike power sensor
    STORE_ID: 00000000000000000000000000000000

    WARNING: Unable to close bike power sensor
    STORE_ID: 00000000000000000000000000000000

    In each case the error store_ID points at the watch face. But the issue is the 'timer' app stops working.