Entrek TOOLBOX Evaluation Information

Overview

Required Patch

Evaluation Period

CodeSnitch Limitation

Smartphone Developers

Evaluation Tips

Known Issues

Feedback

Overview

Thank you for your interest in our product.  We hope that you'll discover the powerful features built into our toolset and see how those features can be used to quickly find and fix bugs that would otherwise be very difficult to debug, or, worse, go undetected!

The Entrek TOOLBOX Evaluation Edition is intended to help you determine if the product

  1. Works in your environment, including your desktop operating system and your Windows CE target device.
  2. Has the necessary features to aid you in your debugging.

The evaluation software is not intended to help you find and fix bugs in your production code.  As such, one key feature in the CodeSnitch tool has been limited.

Both the professional and standard editions may be evaluated.  However these two editions cannot coexist on the same machine.  After evaluating one, you must remove it before evaluating the other.

Required Patch

After installing Entrek TOOLBOX, you must install a patch, which fixes several known issues.  Information about the patch, including instructions for downloading and installing, can be found here.

Evaluation Period

The evaluation period is 14 days.  The 14 day period begins the day you install the software.  It ends either 14 days after installation or after 30 days of registration, whichever comes first.

If you've previously evaluated Entrek TOOLBOX version 1.4 and would like to extend your evaluation, please send a request to Entrek Support.  You will not receive a valid evaluation key by resubmitting the registration form.

If you've previously evaluated an earlier version of Entrek TOOLBOX and wish to evaluate the latest version, then you may resubmit the registration form to receive a valid evaluation key.

CodeSnitch Limitation

CodeSnitch is the tool which will instrument your application so that it can, among other things, keep track of memory and resource allocations made by your application.  It can then determine if your application is leaking.  When your application makes a call that is tracked by CodeSnitch (for a full list of functions, see the Reference section of the CodeSnitch electronic help file), one or more events will be generated depending on your runtime options.  Each event contains an address and a call stack which allows you to trace the path that led to the function call.  In the full edition of CodeSnitch, it will use symbolic information to resolve these addresses to the file and line number of the source code that created the event.  It will then display the source in the source viewing window.  However, in the evaluation edition, the symbolic information is resolved for the first 50 events only.  Only the address is given for all other events.

This limitation is removed if the application you are testing is small, generally under 4KB for native Win32 applications and 32KB for MFC applications.  That is, for small sample applications, addresses are resolved for all events.  You are encouraged to test against sample applications in order to verify that the product gives accurate results.

Smartphone Developers

Entrek TOOLBOX will work with Smartphone.  You must, however, follow a few simple instructions before connecting to your target device, whether it is a physical device or the Smartphone emulator.

First, your target device must be unlocked for development.  Effectively, this means that you must be able to provision the device with certificates that you generally sign your application with.  Before loading an application or a DLL, the operating system will verify that the application is signed with a valid certificate and assign a trust level to the application, depending if the certificate is installed in the "Privileged Certificate Store" or the "Unprivileged Certificate Store".

Unlocked phones can also run unsigned applications.  Unsigned applications will run, but in unprivileged mode.

CodeSnitch makes a slight modification to application and DLL files at instrumentation time (it also reverts the changes when uninstrumenting).  This modification will cause the signature checking performed by the operating system to fail (it performs a checksum validation), and your application will fail to load.  To work around this problem, simply do not sign your application when testing with CodeSnitch.  To turn off application signing, go to the Security tab in the eMbedded Visual C++ Project Settings dialog (use the arrows in the tab control to scroll to the Security tab).  Uncheck the checkbox labeled "Sign this Application".  Then rebuild and redeploy the application to the target device.

ProcMan uses privileged operating system functions.  For it to be able to run, then, the binary files ProcMan installs on the target device must first be signed with a certificate which is installed in the "Privileged Certificate Store".  You must manually sign these files before connecting ProcMan.  You may use the signcode.exe tool which comes with your Smartphone SDK.  For Smartphone 2002, signcode.exe can be found in \Windows CE Tools\wce300\Smartphone 2002\tools.  For Smartphone 2003, it can be found in \Program Files\Windows CE Tools\wce420\Smartphone 2003\tools.

The binaries that must be signed for ProcMan are toolbox.exe, tbhelp.dll, procmance.dll, and storemance.dll.  For Smartphone 2002, these files can be found in \Program Files\Entrek\TOOLBOX\Target\wce300\arm.  For Smartphone 2003, the files can be found in \Program Files\Entrek\TOOLBOX\Target\wce400\armv4.

Future version of Entrek TOOLBOX will have support in the user interface to make these steps easier and more seemless.

For more information about Smartphone security, certificates, and other signing issues, please refer to the information provided in your Smartphone SDK.

Evaluation tips

Review the system requirements and verify that your development environment is properly configured.

Review the Release notes and documentation provided in the electronic help files.

CodeSnitch Tips

  1. For best results, use a debug build of your applications and DLLs.  CodeSnitch can be used against retail builds, but symbolic information is not generated by default.  If you do generate symbolic information, CodeSnitch will use it, but because of compiler optimizations, may give incorrect file and line number information.  See the CodeSnitch electronic help file for more information.
  2. Use Microsoft eMbedded Visual C++ or Microsoft Platform Builder to build and deploy your application to your target device or emulator.  No special build steps are required.
  3. Connect CodeSnitch to your target device or emulator and then click the "Run" toolbar button.
  4. Click the Runtime Options... button to set the level of error detection and reporting you desire.
  5. Make sure your application as well as all DLLs used by your application are instrumented, including those loaded by an function call such as LoadLibrary or CoCreateInstance.  To view and modify the list of DLLs that are instrumented, click the Dependencies... button on the Run dialog.  Note that system DLLs cannot be instrumented (and generally do not need to be instrumented).
  6. Click the Go! button to instrument your application.  If the Instrument and Run radio button is selected, CodeSnitch will also launch your application and a new Events window will open, displaying events as they occur.  If Instrument Only is selected, the application will be instrumented.  You can then start the application by any means (including the Microsoft eMbedded Visual C++ or Platform Builder debugger).  Once started, CodeSnitch will open a new Events window (make sure to keep CodeSnitch connected).
  7. To see the newest events that occur, sort by descending sequence.  Click the Sequence column header to change the sort order.
  8. The first event will be a Process Loaded event.  The last event will be a Process Unloaded event.  CodeSnitch will calculate leaks once the Process Unloaded event arrives.  Note that for Pocket PC, your application may not close when you click the "X" caption bar button.  It will only be minimized.  You can use ProcMan to verify that the application is still running.  If it is, you can use ProcMan to close the main window.   Expand the Processes node, then expand your process node, and then expand the Windows node under that.  Now right-click on the main window and select Close.
  9. The CodeSnitch main events window will gray allocation chains for memory and resources that have been freed, allowing you to focus only on those that are still allocated.
  10. The columns displayed can be altered using the View\Preferences... menu item.
  11. Debug trace messages show OutputDebugString in the API column.  The actual text of the message is in the Description column.

ProcMan Tips

  1. You can monitor CPU time, percentage, and memory size for all processes by selecting the Processes node, entering a refresh rate in the Refresh toolbar dialog (we suggest two seconds or higher), and then clicking the AutoRefresh toolbar button (the yellow clock with the circle arrow around it).
  2. You can view/monitor CPU time and percentage on a per-thread basis by expanding a process node and selecting the Threads node.
  3. Heap usage can be viewed/monitored for a process by expanding that process's node and selecting the Heaps node.
  4. If you have a windowing problem in your application, you can use trial-and-error debugging to change the windows style bits, z-order, screen coordinates, etc. by finding the window, right-clicking it, and selecting the proper context menu item.  You can use the information you gather to modify your source code to fix the problem.
  5. You can also simulate low memory by posting a WM_HIBERNATE message to your main window.  Simply select your main window, right-click it, and select the PostMessage... context menu item.
  6. If you need to fine tune your application (perhaps you have threads that aren't getting enough time - or any time at all!), you can modify the thread's priority and quantum in real-time.  Right click a thread and select Properties.  Once you've determined the appropriate priority and quantum, you can modify your source code as necessary.

Known Issues

When connecting, ProcMan and CodeSnitch may install the wrong binaries on the target device.

This issue can occur when targeting Windows CE versions 4.0 and higher that have an ARM-based processor, including XScale and TI OMAP.  Entrek TOOLBOX ships with binaries built for ARMV4, ARMV4I, and ARMV4T.  When connecting, for example, it may install ARMV4 binaries, though the target device is ARMV4I.

There is a workaround for this issue.  Both ProcMan and CodeSnitch accept a command line parameter called "targetcpu".  You can specifiy this parameter directly, or create a shortcut that contains it.  Note that if you target two different CPUs (for example, ARMV4I and X86), you will need a shortcut for each target.  The command line parameter must be specified as /targetcpu:<cpu_dir> where <cpu_dir> is the name of the directory that contains the binaries you want the tool to use.  Examples are /targetcpu:ARMV4, /targetcpu:ARMV4I, and /targetcpu:ARMV4T.

Feedback

If you have any questions, comments, or other feedback regarding the tools or Entrek Software, Inc. in general, please send email to Entrek Information.

Hit Counter

 

Copyright © Entrek Software, Inc.