****************************************
*  NuMega TrueTime Visual C++ Edition  *
*           Beta 3 Release             *
****************************************


Thank You! 
What's New? 
Contacting NuMega Lab Technical Support 
Installing TrueTime 
Hardware and Software Requirements 
Before Installing 
Installing 
Removing an Installation 
TrueTime Online Help
Getting Started 
What is TrueTime? 
What Does TrueTime Profile? 
What Makes TrueTime Different? 
What Happens When You Instrument and Run Your Application 
Up and Running in 10 Seconds 
Frequently Asked Questions 
FYI
Known Anomalies 



Thank You!
----------
Thank you for purchasing TrueTime, the newest tool in NuMega's line of award 
winning development tools. TrueTime is a performance evaluation tool that 
collects data about your application. You can use this data to pinpoint 
performance problems and increase the efficiency of your code. We look forward 
to your constructive feedback.


What's New? 
----------- 
We have added or fixed the following items since Beta 2. 

* By default, TrueTime does not instrument inline functions if inline 
  optimizations are enabled (using the /O1, /O2, /Ob1, or /Ob2 option). 
  This change should improve instrumentation and execution performance if 
  your application uses inline functions or MFC. You can change this in 
  TrueTime Settings in Visual C++. 

* The Address column has been added to the Function List tab. 

* TrueTime Tools menu items have been moved to the new TrueTime menu item. 

* NMCL options are no longer case sensitive. 




Contacting NuMega Lab Technical Support
---------------------------------------

For Technical Issues
====================
NuMega Lab Technical Support can assist you with all your technical problems, 
from installation to troubleshooting. 

Before contacting technical support, please read the relevant sections of 
the documentation and the Readme files.

You can contact Technical Support by e-mail. Include your serial number 
and send as many details as possible to ttvc@numega.com

Before contacting Technical Support, please obtain and record the following 
information:
* Product name (or edition), version, or service pack
* Product serial number
* Your system configuration: operating system, network configuration, amount 
  of RAM, environment variables, and paths
* The details of the problem; settings, error messages, stack dumps, and the 
  contents of any diagnostic windows
* If the problem is repeatable, the details of how to create the problem
* The name and version of your compiler and linker and the options you used 
  in compiling and linking



Installing TrueTime

Hardware and Software Requirements
----------------------------------
It is a good idea to backup your system before you install the product. The 
following items are required to install and run TrueTime.
* PC-compatible Intel Pentium system or above
* Microsoft Windows NT 4.0, Microsoft Windows 95, or Microsoft Windows 98 
  (Release Candidate). If you are installing on Windows NT 4.0, you must have 
  administrative privileges on the machine.
* RAM: 32 MB minimum 
* Disk: 10 MB for full installation
* Visual C++ 4.2, 5.0  


Before Installing
-----------------
* Visual C++ must be installed before you install TrueTime.
* Uninstall any previous versions of TrueTime that are on your system 
  before you install this release.


Installing
----------
1 Close all open programs. 
2 Insert the TrueTime CD into your CD-ROM drive. If you have CD auto-run enabled, 
  the installation starts automatically. If you have CD auto-run disabled, open 
  Explorer, and navigate to the root drive of your CD-ROM and double click on 
  SETUP.EXE.
3 Follow the prompts to install TrueTime. 

NOTE: If you install multiple versions of TrueTime (VB, VC, Java), 
      you must install them in the same directory. 



Removing an Installation
------------------------
To remove TrueTime, use the Add/Remove Programs applet in Control Panel. Remove 
TrueTime performs the following actions.
* Deletes TrueTime files from the TrueTime installation directory and 
  sub-directories
* Removes TrueTime registry entries
* Deletes the TrueTime program folder and items





TrueTime Online Help 
==================== 
The TrueTime Visual C++ Edition Online Help is largely complete, with the 
exception of the tutorial. Before contacting support, check the online help 
for information. 




Getting Started

What is TrueTime?
-----------------
TrueTime is a performance analysis tool that collects and displays performance 
data for application sessions. The performance data includes information about 
images, source files, and lines of source code. You can use this data to 
identify performance problems and examine relationships among functions. 


What Does TrueTime Profile?
---------------------------
In addition to gathering session data about your source code, TrueTime gathers 
data about calls made to external components. For example, if your application 
calls a system or third-party DLL, TrueTime can gather performance information 
about the functions that your application calls in the DLL. TrueTime also gathers 
session data for ActiveX functions, even if you do not have the source code.


What Makes TrueTime Different?
------------------------------
When you instrument and run your application with TrueTime, you can configure 
TrueTime to use Quantum technology. Quantum technology distinguishes 
between time spent in threads of your application and time spent in threads of 
other running applications. Session data collected with Quantum technology 
enabled contains time measurements only for time spent in threads of your 
application. This helps TrueTime generate accurate, reproducible results that 
are independent of outside influences.


What Happens When You Instrument and Run Your Application
---------------------------------------------------------
During instrumentation of your Visual Basic or Visual C++ application, TrueTime 
works with the compiler to add instructions to your image to collect performance 
data at run time. For example, TrueTime is called each time a function is entered 
and each time a function is exited. TrueTime uses this information to determine 
the execution time of the function. 

While TrueTime collects timing information, Quantum technology monitors context 
switching and tracks how much of the CPU time is spent working on other threads. 
After collecting the timing data, TrueTime subtracts the time spent in other 
threads from the clock time to determine exactly how much time was spent in your 
application. 




Up and Running in 10 Seconds
----------------------------
1. Open your project in Visual C++.
2. On the Tools menu, select Run with TrueTime.
   TrueTime instruments and runs your application. After you quit your application, 
   TrueTime displays a session file that contains the performance information 
   for that session. Refer to the TrueTime Online Help for details on reading 
   this data.
3. To save this session file as part of the active project, on the 
   File menu, select Save. You can use various session files to compare 
   different performance scenarios.

See the TrueTime Online Help System more information on using TrueTime.
See the "Frequently Asked Questions" section for information about advanced 
techniques for accessing performance information on client server applications 
and ActiveX controls.



Frequently Asked Questions
--------------------------
Q. What is the [Program Start] entry in the Function Details and Function List tab? 
A. This entry represents the beginning of the program. All functions listed as 
children of a Program Start were called during program initialization. 

Q. What are the [Thread Start - thread ID] entries in the Function Details and 
   Function List tab? 
A. These entries represent the beginning of a thread. All functions listed as 
children of a Thread Start were called during thread initialization. 

Q. What are the hexadecimal address entries in the Function Details and Function 
   List tab?
A. These entries represent functions for which TrueTime cannot find enough symbol 
information to identify the functions. You might see a lot of these entries if 
you link to the release version of MFC (MFC42.dll) because MFC exports by ordinal 
instead of by function. 

Q. What are the #number[image name] entries in the Function Details and Function 
   List tab?
A. These entries represent unnamed functions exported from DLLs as ordinal values.

Q. Can I instrument an application from a batch file or the command line?
A. Yes. See the To Instrument with TrueTime from the Command Line topic in the 
TrueTime Online Help for information about the command.

Q. Can I use TrueTime to profile a non-instrumented application?
A. Yes. The To Profile a Non-instrumented in the TrueTime Online Help describes 
the steps required to profile a non-instrumented application. 

Q. How can I profile an ActiveX server from the command line?
A. To profile an ActiveX server or ActiveX document server, instrument the server 
with TrueTime in Visual C++. When you run your client application and access the 
server (for example, with OLE), TrueTime collects performance data for the server.

Q. Do I always have to instrument and run my application from the Visual C++ 
   Integrated Development Environment (IDE)?
A. No. After you instrument your application with TrueTime, you can run it outside 
of TrueTime and still gather performance data. When you start your instrumented 
application from Windows Explorer or from a command prompt, TrueTime displays an 
icon in your task bar to indicate that it is collecting performance data. When you 
quit your application, TrueTime prompts you to save the performance data or view 
it in TrueTime.
	Note: If you change your application, you must re-instrument to gather 
	      performance data for the updated application.

Q. How can I get performance data on my ActiveX controls that are used in Internet 
   Explorer or another client application?
A. There are two ways to get the performance data after you instrument your control. 
The first is to run Internet Explorer, or your client application, and start using 
it so that your control gets loaded. When your control is loaded, TrueTime displays 
an icon in your task bar and collects performance data. You can also instrument your 
application and select the Program menu Settings option in TrueTime. In the Program 
Info tab, enter the name of the application you want to run in Executable for Session. 
   NOTE: If you use Internet Explorer 4.0 with the Active Desktop feature 
   enabled, you must specify the -new option when you start Internet Explorer. 

Q. How can I use TrueTime to collect performance data for a client/server application 
   that consists of two executables?
A. TrueTime can handle this easily because it gathers performance data when you run 
instrumented applications inside or outside of TrueTime. Complete the following steps 
to gather performance data for a client/server application.
	1 Open the server project in Visual C++.
	2 Instrument the server project, but do not run the server.
	3 Open the client project in Visual C++.
	4 Instrument the client project.
	5 Run the client application. When the client starts the server, TrueTime 
	  displays an icon in the task bar indicating that the server is running and 
	  TrueTime is collecting session data.
	6 When the server unloads, TrueTime asks you to save the server session file.
	7 When you quit the client, TrueTime displays the session data for the client 
	  session. You can open the server session file to view the session data for 
	  both components simultaneously.

Q. When I instrument and run an ActiveX server application directly from TrueTime, 
   I cannot see the source code or performance data for my code. Why?
A. To gather performance data for a server application, you must start the server 
from a client application.

Q. How can I view data for the ActiveX interfaces called by my application?
A. Select the ActiveX Interfaces and Controls filter on the Filter pane to display 
data for the ActiveX interfaces on the Function List tab. Refer to the TrueTime 
Online Help for more information about filters.

Q. There is a TrueTime directory in my project directory that I did not create. 
   Where did it come from? 
A. TrueTime creates this directory during the instrumentation when you use the 
TrueTime build model. 



FYI
---
* When you instrument your application from the Visual C++ IDE, TrueTime uses the 
  active configuration. When you instrument from the command line, check the TrueTime 
  Online Help for information about options and settings. 

* TrueTime is integrated only with the Visual C++ 5.0 IDE. To use TrueTime with 
  Visual C++ 4.x, you can instrument and run from the command line. 

* Before you instrument your application in Visual C++ 5.0, make sure the Separate 
  types setting is turned off. Complete the following steps to turn off this setting. 
	1. On the Project menu, select Settings. 
	2. Click the Link tab. 
	3. Set Category to Debug. 
	4. Clear the Separate types check box. 
	5. Delete the project EXE. DLL, or OCX. 
	6. On the Tools menu, select Build with TrueTime. 

* Use custom build command macros to specify directories in custom build commands 
  instead of hard coding the directories. 

* When you profile a DLL or OCX, TrueTime always asks you to specify the EXE 
  to be used. TrueTime does not check to see if an EXE is specified in the 
  Executable for debug session setting on the Project Settings Debug tab. 

* TrueTime cannot collect performance data for an instrumented OCX that is loaded by 
  Microsoft Developer Studio or Visual Basic. To collect performance data, you can 
  to load/test your OCX with TSTCON32.EXE.

* If you add an instrumented Visual C++ OCX to your Visual Basic project, TrueTime 
  cannot gather performance data for that OCX when you run your project from 
  Visual Basic. To gather performance data for the OCX, make the project executable 
  and run the executable.

* You can use TrueTime to profile applications running under the Windows CE emulator. 
  Instrument and run the application with the TrueTime. If TrueTime generates a 
  build error stating that "your_app.trg" is not present, select Yes to build that 
  module. The application will start running on the emulator. You should see a TrueTime 
  item on the taskbar when the application comes up on the emulator. When you quit the 
  application, TrueTime prompts you to save or view your session file. 
	NOTE: The timing data for calls to API functions might be inaccurate
	      because emulation affects timing. 

* You can change the target directories for Intermediate and Output files of 
  TrueTime builds in Visual C++. On the TrueTime menu, select TrueTime Settings. 

* You can choose between the TrueTime build model and the default build model 
  (builds into the directory for the current configuration). This setting is in the 
  TrueTime Settings in Visual C++. On the TrueTime menu, select TrueTime Settings. 

* If you move your image (EXE, DLL, or OCX) from the TrueTime directory, make sure 
  you move the corresponding PDB file with it. 




Known Anomalies
---------------
* On Windows NT, you must have administrative privileges to use Quantum technology.

* On Windows 95, Visual C++ has a problem with dependency checking which can cause 
  TrueTime to rebuild your entire project when you specify Build with TrueTime. 

* TrueTime automatically registers ActiveX projects, but does not indicate this in 
  the Visual C++ build messages. 

* TrueTime does not support the use of Windows Explorer name space extensions. 

* If you specify the storage-class attribute naked for a function, TrueTime 
  issues a warning during instrumentation and does not instrument that function. 
  Subsequently, the TrueTime parent/child relationships and function lists do not 
  properly reflect this function. 

  TrueTime depends on a stack-frame to instrument and report information about a 
  function.  If it cannot guarantee a stack-frame, TrueTime does not instrument 
  the function.

* TrueTime currently appends an underscore (_) and alphanumeric value to the names 
  of overloaded functions in the Function List and Function Details. If you select 
  Go to Source from the View or context menu, TrueTime takes you to the correct 
  source code. 

* TrueTime does not support the Line numbers only (/Zd) compiler option. 

* TrueTime does not recognize the COFF debug information format generated with 
  the /DEBUGTYPE:COFF linker option. A workaround is to generate both 
  CV (Microsoft CodeView) and COFF formats info using /DEBUGTYPE:BOTH.

* TrueTime does not gather performance data on system wide hooks in this 
  Beta release.

* TrueTime includes limited support for profiling NT services. Complete the 
  following steps to profile an NT service. 
   - Open the Services applet in Control Panel and select the item that allows 
     the service to interact with the desktop
   - Currently, you cannot use Quantum technology while profiling an NT service.  
     If Quantum is enabled, it might cause your machine to hang. You must set the 
     following system (not user) environment variable in the Control Panel before 
     you start your service.
	Variable:  NO_ACTIVE_THREAD     
	Value:     1
   - If the service times out on its initialization, increase the timeout values 
     in the code.

* TrueTime does not support the setjmp or longjmp functions. 

* When you run an instrumented control in Internet Explorer 4.0 with the Active 
  Desktop feature enabled (for example, with an ActiveX .dll or .exe), you must 
  start Internet Explorer with the -new option to get performance data. 
  Use the following command. 
         iexplore.exe -new <file-name> 

* For this Beta release, TrueTime does not work with the Visual C++ 6.0 Beta 
  Release. 





