Diagnosing Common Issues with RTSS ObjectViewer

This topic describes some useful ways to use ObjectViewer for diagnosing your RTSS applications and RTDLLs.

Determining Which Processes and Threads Cause Fatal Errors

Fatal errors include process and thread addresses in the error message. You can record these addresses, then look at the Address column in ObjectViewer to determine which process or thread has caused the error.

NOTE:  To see the Address column, turn Compact Style view off.

Identifying Memory Leaks

You can use ObjectViewer to determine if memory leaks exist. If, after theoretically cleaning up all memory for a thread, you still see in ObjectViewer that memory has been allocated to the thread, you know you have a memory leak.

Identifying Discrepancies Between Stack Size and Stack Usage

Threads whose stack usage exceeds their stack size can cause blue or green screens to occur. You can use ObjectViewer to view both stack usage and stack size information to determine if problematic threads exists.

Diagnosing Shared Memory Issues

In instances where a shared memory object already exists, calling RtCreateSharedMemory behaves as an RtOpenSharedMemory call instead. This can cause confusion because you may think you have created a shared memory object with a certain size but instead you opened an existing shared memory object with its own previously defined size. ObjectViewer reports the base address and size of any shared memory objects, so you can determine if a shared memory object has the size you think it should.

NOTE:  For additional information about RtCreateSharedMemory and RtOpenSharedMemory, see the RTX SDK documentation.

Determining Who Owns a Mutex

To view who owns a mutex, select the mutex in tree view, then scroll to the right to view the Owner/Handler column.

Viewing Useful RTDLL Information

In ObjectViewer, you can see who is using an RTDLL (the Owner/Handler column) and also the number of functions the RTDLL is exporting (Exported Functions column). This information can help you determine if there is a discrepancy between the number of functions the RTDLL is supposed to export and the number of function it is actually exporting.

Viewing Useful Timer Information

To determine what interval a timer is using, select the timer in tree view, then scroll to the right to view the Interval column. To determine what clock your timer is based, scroll to the State column.

 

See Also

IntervalZero.com | Support | Give Feedback