Debugging BlackBerry Device Development

Device client and Unwired Server troubleshooting tools for diagnosing RIM® BlackBerry® development problems.

Client-side debugging

Problems on the device client side that may cause client application problems:
  • Unwired Server connection failed.
  • Data does not appear on the client device.
  • Physical device problems, such as low battery or low memory.
To find out more information on the device client side:
  • If you have implemented debugging in your generated or custom code (which Sybase recommends), turn on debugging, and review the debugging information. See Developer Guide: BlackBerry Object API Applications about using the MBOLogger class to add log levels to messages reported to the console.
  • Check the log record on the device. Use the <PkgName>DB.getLogRecords (com.sybase.persistence.Query) or Entity.getLogRecords() methods. Use this method for logs corresponding to MBO classes.

    This is the log format:

    level,code,eisCode,message,component,entityKey,operation,requestId,timestamp

    This is a log sample:

    5,500,'','java.lang.SecurityException:Authorization failed: Domain = default Package = end2end.rdb:1.0 mboName = simpleCustomer action = delete','simpleCustomer','100001','delete','100014','2010-05-11 14:45:59.710'
    • level – the log level currently set. Values include: 1 = TRACE, 2 = DEBUG, 3 = INFO, 4 = WARN, 5 = ERROR, 6 = FATAL, 7 = OFF.
    • code – replication synchronization, Unwired Server administration codes, based on HTTP return codes:
      • 200 – success.
      • 401 – the client request included invalid credentials, or authentication failed for some other reason.
      • 404 – the client tried to access a nonexistent package or MBO.
      • 409 – backend EIS is deadlocked.
      • 412 – backend EIS threw a constraint exception.
      • 500 – failure.
      • 503 – backend EIS is not responding, or the connection is terminated.
      • 601 – the cache database (CDB) reported an error.
    • eisCode – a value specific to the EIS backend, if any. Typically defaults to blank or 0 (zero); can be set via result checker.
    • message – the message content.
    • component – Mobile Business Object (MBO) name.
    • entityKey – MBO surrogate key, used to identify and track MBO instances and data.
    • operation – operation name.
    • requestId – operation replay request ID or messaging-based synchronization message request ID.
    • timestamp – message logged time, or operation execution time.
  • Check the Storm event log:
    1. On the Home screen, press Hold.
    2. Click the upper-left corner and upper-right corner twice.
    3. Review the event log.
  • Check the BlackBerry event log:
    1. On the device, press ALT+lglg; or, for touch-screen devices, hold the ESC key, tap (no click) top-left, top-right, top-left, then top-right.
    2. Review the event log, and see the RIM BlackBerry documentation for information about debugging and optimizing.http://na.blackberry.com/eng/developers/resources/A50_How_to_Debug_and_Optimize_V2.pdf
  • For other issues, you can use tracing on the device side to trace Client Object API activity. Sybase Unwired Platform supports three levels of tracing:
    • 1 = Tracing is disabled
    • 3 = SQL Trace without payload
    • 5 = SQL Trace with payload (values displayed)
    There are two ways to enable tracing on the client side:
    • Via Sybase Control Center through the Applications folders:
      1. Click on the Applications folder in the Unwired Platform Cluster frame.
      2. In the Applications tab, select the application you wish to enable tracing for.
      3. Select the Application Connections tab and select the user you wish to enable tracing for.
      4. Click on the Properties button to open the Application Connection Properties window.
      5. Click on Device Advanced to display advanced connection properties.
      6. Change the value of the Device Level Trace property to the appropriate level.
      7. Click OK to save your changes.
    • Via code by calling the appropriate API. In the SUPConnectionProfile class, there are two APIs that can be used:
    • - enableTrace(boolean enable)
      - enableTrace(boolean enable, boolean withPayload)
      The application in the initialization code can invoke these APIs to enable/disable tracing:
      ConnectionProfile *cp = SUP101DB.getConnectionProfile();
      
      // To enable trace of client database operations (SQL statements, etc.)
      cp enableTrace(true);
      
      // To enable trace of client database operations with values also displayed
      cp enableTrace(true, true);
      
      // To disable trace of client database operations
      cp enableTrace(false);
      
    Note: Once the trace level is set, the application must be restarted for the tracing to take effect. SQL tracing (level 3 and 5) can cause significant performance degradation, so it should be used with caution. SQL tracing should only be enabled via Sybase Control Center long enough for the device application to capture relevant tracing. When finished, you should shut down the application and relaunch it to run with tracing disabled.

Server-side debugging

Problems on the Unwired Server side that may cause device client problems:
  • The domain or package does not exist.
  • Authentication failed for the synchronizing user.
  • The operation role check failed for the synchronizing user.
  • Back-end authentication failed.
  • An operation failed on the remote, replication database back end, for example, a table or foreign key does not exist. Detailed messages can be found in the Log Record.
  • An operation failed on the Web service, REST, or SAP® back end. You can find detailed messages in the log record.
To find out more information on the Unwired Server side:
  • Check the MMS server log files. See the Sybase Control Center documentation for more information.
Related reference
Sybase Unwired Platform End-to-End Process Flow
Debugging Message Synchronization
Debugging Replication Synchronization
Debugging the Cache
Debugging Data Change Notification
Debugging Android Device Development
Debugging iOS Device Development
Debugging Windows and Windows Mobile Object API Development
Debugging DOE-C End-to-End Process Flow
Debugging JCO End-to-End Process Flow