Вы находитесь на странице: 1из 9

Release Notes for NuMega SmartCheck (TM) Version 6.

03 This document contains late-breaking technical and product information. Contents * * * * * * * * * * * What's new in 6.03 What's new in 6.01 What's New in 6.0 Reporting Problems and Suggestions Installation Prerequisites Installation Removing an Installation Frequently Asked Questions Bug Fixes Known Anomalies Technical Notes

What's New in SmartCheck 6.03 ========== SmartCheck 6.03 is a bug fix and performance release. The following bugs have been corrected: - SmartCheck 6.03 requires Microsoft Visual Basic 5.0 SP3 or later. - All dates displayed by SmartCheck are now displayed using the user specified date format as specified in the control panel. - The symbol table has been updated to handle very long symbol names that are generated by templates and other automated code generation software. - We now use an improved algorithm to validate parameters to the following API routines: strncpy, strncat, strncmp, wcsncat, wcsncpy, wcsncmp. - Improved uninitialized memory checking for C run-time library calls. - Updated support for Windows 2000 Beta 3 RC1 and Windows 98 OSR1 Beta - DevCenter integration on the SmartCheck menus and Pop up dialog box (only available in the DevCenter Edition) - Function names are now case sensitive in the suppression file - Deeper call stacks for ATL/COM applications - Improved error messages for NMCL and NMLINK command parsing errors. - Improved support for APIs that make use of HKEY handles. - Updated the API compliance database for the Win32 Internet (WinInet) functions to include support for Windows 95. - Improved detection of dangling pointers - Improved the logic for "Pointer leaked due to reassignment" to generate less false positives.

- Various API validation and resource tracking enhancements What's New in SmartCheck 6.01 ========== SmartCheck 6.01 is a Service Pack release that includes: - Support for Windows NT 5.0 Beta 2 (Preliminary) - Minor modifications to the Error Detection tab in the Settings dialog box. - New and Updated API validations - Improved memory leak detection - It also contains bug fixes. What's New in SmartCheck 6.0 ========== SmartCheck 6.0 is easier to use. You can start and stop event reporting to see j ust the events you are debugging. When SmartCheck detects an error, you can go d irectly to Visual Basic to fix it. SmartCheck 6.0 supports VB6 and several new o perating systems. It also contains bug fixes and many enhancements. 1. New * * * * operating systems and compilers supported: Microsoft Visual Basic 6 Microsoft Visual C++ 6 Windows CE emulation mode Windows 98

2. Microsoft Visual Basic 6 support includes support for User defined types (UDT s) and CallByName, plus parameter checking and error analysis for these new VB i ntrinsics: Filter, FormatCurrency, FormatDateTime, FormatNumber, FormatPercent, InstrRev, Join, MonthName, Replace, Round, Split, StrReverse, WeekdayName, StrCo nv, CreateObject. In Examples, VBBugBench has examples for VB 6 intrinsics. Thes e are disabled by default. To enable the VB 6 intrinsics add the following line to the Conditional Compilation Arguments edit control on the Make Property Page: VB6_INTRINSICS = 1. Set VB6_INTRINSICS = 0 (or leave the argument blank) to com pile for VB 5. 3. When SmartCheck detects an error, you can go to your source code in Visual Ba sic and edit your code. You must launch SmartCheck from Visual Basic to use this feature. Go to Source is available from the Program Error Detected window, and from any line in the Program Results window that is associated with VB source co de in the project you loaded before running SmartCheck. 4. You can start and stop collecting information in the event log while your pro gram is running. This lets you reduce the size of your event file, and see just the events for the part of the run you are trying to debug. From SmartCheck, use the new toolbar button, or deselect Event reporting on the Program menu to turn off logging. You can also control reporting from the Program Error Detected win dow. Note: After you stop event reporting, you may still see a few events in the Program Results window if these events are needed to match up with events that occurred while reporting was enabled. You can set the initial event reporting st ate for your program on the Reporting tab of the Program Settings dialog. 5. SmartCheck provides an API for starting and stopping event reporting from wit hin your program. The Event Reporting API can be used as a straight API from C/C ++ programs, or as a COM object from VB. NMEVTRPT.dll is installed in the Window s System directory. The header and import library files are in ERptAPI under the SmartCheck installation directory (NMEvtRpt.lib, and NMEvtRpt.h). See Using the

Event Reporting API (AboutAPI.txt) in ERptAPI for details. 6. SmartCheck collects version information and the complete filename of every mo dule loaded by your program. Choose Version Information from the View menu to se e the information. Click on column headers to sort in ascending order. You can a lso print a report of version information. 7. SmartCheck records environment information about your session in a new Sessio n Information event. To see this event, use View-Specific Events, and check Comm ents. Session information is the first event after your program starts. SmartChe ck also logs your username, machine name and run date in the Program Transcript window. 8. SmartCheck version 6 adds analysis for VB runtime errors resulting from a sys tem exception (such as Access Violation or GPF) or C++ exception inside a proper ty put or get, or method call. Previously, these errors tended to result in VB r untime error 80010108, with no information on the source of the problem. Also in cluded is analysis for C++ or system exceptions while loading a DLL (VB runtime error 48). Previously, this resulted in a vague analysis such as "Invalid access to memory location. The new analyzers tell you the details of the exception, an d where it occurred. 9. Help for detected errors includes more Visual Basic code samples. 10. You can turn off immediate reporting of detected errors from the Program Err or Detected window. This is useful if SmartCheck is detecting lots of errors, an d you want to continue your run without acknowledging each error as it is detect ed. 11. On the View menu, View suppressed errors lets you display suppressed errors in the Program Results window, or remove them from the view. This option only ap plies to errors you suppressed yourself, and not to errors suppressed by the sta ndard libraries distributed with SmartCheck. 12. SmartCheck's new compliance report makes it easier for you to see just the A PI calls your program makes that aren't supported by a particular operating syst em. Compliance reporting moved from the Program menu to the View menu. 13. A new setting, Overwrite memory with fill pattern upon deallocation, was add ed to Advanced Error Detection settings. When a program runs under SmartCheck, W indows NT can overwrite freed memory with a fill pattern to increase the chance that a General Protection Fault will occur if the program uses the freed memory. In previous versions of SmartCheck, this behavior always occurred. As a result, some programs that continued to use freed memory appeared to work outside of Sm artCheck, but failed to run under SmartCheck. Since the error was often in third party code the user could not control, it was not possible to continue checking the application under SmartCheck without modifying the Windows NT Registry. Now you determine whether or not Windows NT overwrites memory after it is freed. To perform the most rigorous check on your program, enable the Overwrite memory wi th fill pattern setting. This setting applies only to Windows NT. 14. SmartCheck remembers dlls and ocxs that your program loads dynamically. This makes it easier for you to do selective checking because you don't need to manu ally enter the names of dynamically loaded modules in the Files to check tab of the Program Settings dialog. 15. You can select where SmartCheck stores its temporary files on the Program In formation tab of the Program Settings dialog. 16. SmartCheck appears on a new DevPartner menu and toolbar in the VB IDE. New r

eleases of NuMega DevPartner for Visual Basic products such as CodeReview, TrueT ime, and FailSafe also appear on the DevPartner menu when they are installed. 17. SmartCheck can check programs compiled with NuMega TrueTime 1.1 instrumentat ion, but cannot check programs compiled with TrueTime 1.0. 18. See the section on Bug Fixes for the most significant bug fixes.

Reporting Problems and Suggestions ================================== NuMega Technical Support can assist you with all your technical problems, from i nstallation to troubleshooting. To contact Technical Support: World Wide Web E-Mail Fax Telephone www.numega.com Go to Support tech@numega.com 603-578-8401 888 NUMEGA-S (U.S. and Canada) 1-603-578-8100 (International)

Telephone support is available as a paid Priority Support Service from 8:30 AM t o 5:30 PM EST, Monday through Friday. Have your product version and serial numbe r ready. Technical Support handles installation and setup issues free of charge. Problem reports should include: Product name and version Product serial number System configuration (CPU, RAM, OS) Detailed problem description (include exact error message text) How to reproduce problem Options used in compiling and linking Your SmartCheck error detection settings

Installation Prerequisites ========================== * PC-compatible Intel 486 system or above * Microsoft Windows NT 3.51 and 4.0. Refer to www.numega.com for the latest on Windows 2000 support. * Microsoft Windows 98 * Microsoft Windows 95 * RAM: 32 MB minimum * Disk: 13.8 MB for full installation * Microsoft Visual Basic 5.0 SP3 or Visual Basic 6.0 must be installed prior to Sm artCheck if you want Setup to install Visual Basic IDE integration.

Installation ============ To install SmartCheck, run SETUP.EXE, and the setup wizard will guide you to com pletion.

Removing an Installation ======================== To remove this product, select Settings from the Windows Start menu. Select Cont rol Panel, then run Add/Remove Programs. Files that were created after installat ion will not be removed automatically.

Frequently Asked Questions ========================== How can I use SmartCheck to check my out-of-process server? ----------------------------------------------------------SmartCheck automatically detects errors in your program executable and any in-pr ocess servers. Since SmartCheck only sees one process, it does not automatically check out-of-process servers. To detect errors in out-of-process servers starte d by your program, start multiple, concurrent SmartCheck sessions, one for each EXE to be checked, and one for your program. Start out-of-process servers from s tand-alone SmartCheck sessions, and enter -Embedding as a command line option on the Program Info tab of the Program Settings dialog. Read Checking Multiple Act iveX Executables in Help for detailed instructions. Why does SmartCheck only work with compiled (non p-code) executables? Why can't I check my program while running under the Visual Basic development en vironment debugger? -------------------------------------------------------------------When you build a Visual Basic 5.0 program in native mode with debug information, SmartCheck can treat the program much like a Visual C++ program. T he debug information allows SmartCheck to correlate program addresses with a sou rce file and line number. When built as a p-code executable, there is no debug information to work from. Y ou can run Visual Basic 5.0 p-code executables under SmartCheck, and some featur es will still work. However, SmartCheck will not be able to show you source cod e for errors and events, and other SmartCheck features are not fully supported f or p-code. When debugging a program in the Visual Basic IDE, the program is running in p-co de mode. In addition, there are other critical differences in the way the code is executed. The result is that SmartCheck cannot operate on an executable whil e it is being debugged from the Visual Basic IDE. How do I get more information when SmartCheck doesn't diagnose a problem? -------------------------------------------------------------------By default, SmartCheck doesn't show errors occurring in modules that don't have debug information. This includes the Visual Basic run time library DLL (MSVBVM50 .DLL for VB 5, MSVBVM60.DLL for VB 6). Additional information about a bug in you r program can be often be found by observing the invalid parameters and API fail ures that occur in the VB run time library. To see these errors, go to Error Detection settings (Program | Settings | Error Detection), click Advanced and select "Report errors even if no source code is a vailable," and deselect "Suppress system API and OLE calls." After your run, use Specific Events on the View menu to display additional events such as API calls from C, C++ and System code.

If you do this, you'll likely see many OLE interface leaks at the end of your pr ogram. Some of these are from the OLE interfaces that represent Visual Basic con trols. Others are from the OLE system DLLs.

Bug Fixes ========= 1. This version of SmartCheck supports checking Microsoft Internet Explorer 4 an d Outlook Express, as well as programs that use fibers. 1. If your project group contains an OCX and test program to use the OCX, it is no longer necessary to use VB's "Make project group" to build the project group before running SmartCheck. 2. Non-English language versions of Microsoft Visual Basic can now launch SmartC heck. 3. When you print event files, long lines are no longer truncated. 4. If you run low on virtual memory, SmartCheck notifies you. 5. SmartCheck remembers the last position and size of all its windows. It rememb ers the maximized state of all windows except the Program Results window.

Known Anomalies =============== 1. Applications and tools using a DLL compiled with some versions of Shrinker (f rom Blink Inc.) won't run under SmartCheck, and cause Shrinker to display an err or. Shrinker issued a fix for this problem, so contact your tool vendor for a ne w version of each tool compiled with the new Shrinker. If you are using Stamina, from Microdexterity, a fix is available. If your vendor does not have the new v ersion of Shrinker yet, a workaround is to use SmartCheck Program Settings-Files to Check to disable the DLL or OCX mentioned in the Shrinker dialog. 2. If your program uses a type library to declare win32 APIs, the VB compiler ge nerates code that is identical to the C compiler. By default, these calls are no t collected or displayed in SmartCheck program results. To see a function declar ed in a typelib, select Settings from the Program menu before running your progr am, press Advanced on the Error Detection tab, and deselect "Suppress system API and OLE calls." Run your program. After the run, use Specific Events on the Vie w menu to select API calls from C, C++ and System Code. 3. There is a known bug in Visual Basic 5.0 that can cause an invalid page fault on closing the IDE due to the way Visual Basic 5.0 destroys command bars during shut down. If you experience this problem, refer to Microsoft Knowledge Base Ar ticle ID Q167213, for workarounds (http://support.microsoft.com/support/kb/artic les/q167/2/13.asp). This problem is corrected in Visual Basic 5.0 SP2. 4. Microsoft Script Debugger causes SmartCheck analysis of Visual Basic run-time errors to fail. The SmartCheck Program Transcript window contains the message " Outer event not found". A similar problem may occur with any multithreaded progr am where the other threads keep running (and generating events) during SmartChec k analysis.

5. Abnormal termination of a program compiled with VB 5.0 may cause instability in SmartCheck and Windows 95. If this occurs, upgrade to Visual Basic Service Pa ck 3 (http://www.microsoft.com/vbasic). Until you upgrade, avoid terminating you r program with SmartCheck's End command. This problem does not occur under Windo ws NT. We have noticed a similar problem with abnormal termination of a program compiled with VB 6.0 under Windows 98. If you experience this problem, check wit h Microsoft for service packs for VB 6.0 or Windows 98, and avoid terminating yo ur program with the End command on the SmartCheck Program Error Detected window. 6. Some users have reported that a program compiled by SmartCheck was a differen t size and had different UserControl properties than what they set in the IDE. A fter this occurs, the only way to create a good EXE is to exit and restart VB. W e can duplicate this problem without SmartCheck, and have confirmed with Microso ft that this is a problem in Visual Basic. 7. When displaying parameters of type Date, the event pane correctly decode and shows them (e.g., "1-1-97"). However, the underlying data type of a Date is a do uble. The details pane displays all Date parameters as double values. 8. If a VB intrinsic function takes an unlimited number of comma delimited param eters, SmartCheck will only log/show the parameters that are required. For examp le: write #1, var1, var2, var3, "abc", var4 - Only the first argument (the file number --> #1) is required, and so it's the only one SmartCheck can log. 9. If the source code shown for an event appears to be off by several lines, you may be running a project that was initially created in VB4. The solution is to load the affected form files in VB5, make a change (e.g., add a blank line, then delete it), and then save the project. The next time VB5 rebuilds the program, the source lines should be correct. 10. If your project is already loaded in SmartCheck from VB, and you change Smar tCheck Settings from the VB DevPartner menu, the changes do not take effect imme diately. Either close and reload your project in SmartCheck, or display the Sett ings dialog from SmartCheck activate the new settings. 11. In order to run the SmartCheck samples, you must have Visual Basic 5.0 SP3 or later installed on the system. Technical Notes =============== 1. SmartCheck detects resource leaks and memory problems in C and C++ components , but these types of problems do not occur in Visual Basic code. SmartCheck does monitor memory allocation leaks from an OCX or DLL which is explicitly calling one of the memory allocation APIs. This also includes GDI resources (brushes, p ens, bitmaps) which you or your OCXs may be using. This version of SmartCheck de tects object leaks in C and C++ components, but does not detect them in Visual B asic code. 2. SmartCheck does not track the VB global object or VB debug object. Some Visua l Basic commands such as Load, Unload and Debug.Print are actually methods of th ese objects, and are not tracked by this version of SmartCheck. 3. SmartCheck supports all of the built-in Visual Basic controls, and all of the controls that come with the Visual Basic 5.0 Enterprise edition. SmartCheck als o has visibility into third-party OCXs that use IDispatch::Invoke to communicate with Visual Basic. SmartCheck does not log events fired by controls that use th e "dual interface" mechanism. In addition, SmartCheck doesn't show the interacti ons from OLE objects that aren't "controls". These are objects that you can't d rop onto a form (e.g., "Excel.Worksheet").

4. Checking Third Party Controls - By default, SmartCheck only shows you errors for modules that have source code and debug information available. To check thir d party controls, press Advanced on the Program Settings Error Detection tab. Ch eck "Report errors even if no source code is available." 5. Looking Under the Hood of Visual Basic - By default, SmartCheck filters out e vents that you are not aware of when you write VB code. To see the system intera ctions under your VB code, select Settings from the Program menu, press Advanced on the Error Detection tab, and deselect "Suppress system API and OLE calls." R un your program. When the program results window is displayed, use Specific Even ts on the View menu to show additional details such as API calls from C, C++ and System code, and OLE method calls. You'll see many APIs and OLE methods that ar en't documented, such as EVENT_SINK_Release, ThunRTMain, and __vbaChkstk. These APIs and others like them are the inner workings of the Visual Basic run time li brary. 4. To turn off reporting of OnError statements, suppress this function in MSVBVM 50.DLL. Open your program in SmartCheck, and select Settings from the Program me nu. Go to the Error Suppression tab, select the suppression library for your pro gram, and click Add API Function. Select MSVBVM50.DLL from the Select API dialog , and select OnError from the list of functions. 5. If you use Data Access Objects, you can make your program run faster under Sm artCheck by enabling the DAO350 Suppression Library. Open your program in SmartC heck, and select Settings from the Program menu. On the Error Suppression tab, s elect the DAO350.DLL suppression library. 6. To turn off checking of Data Access Objects, run your program once under Smar tCheck. Then select Settings from the Program menu. Go to the Files to Check tab , and deselect DAO350.DLL from the file list. 7. Programs instrumented with NuMega FailSafe contain error handlers, so SmartCh eck will not notify you when run-time errors occur. To analyze errors trapped by FailSafe, load your program under SmartCheck, choose Settings from the Program Menu, and enable Perform Analysis of Handled Visual Basic Runtime Errors on the Reporting tab. After you run your program, display Handled Errors (Specific Even ts on the View menu). 8. SmartCheck uses a 16k event buffer to determine the cause of a runtime error. If the source code line that SmartCheck needs to know about is too far away to be in the buffer, SmartCheck will not analyze the error. 9. You can run C/C++ modules instrumented with BoundsChecker FinalCheck (BoundsC hecker 5.0 or above, Visual C++ edition only) under SmartCheck. However, you mus t relink with the version of bcinterf.lib that shipped with BoundsChecker 5.03 ( or above). 10. Startup performance and alternate DEFAULT.DAT files -----------------------------------------------------If your program takes an unusually long time to start under SmartCheck, you may want to use one of the alternate DEFAULT.DAT files shipped with SmartCheck. Firs t, backup your existing copy of DEFAULT.DAT by renaming DEFAULT.DAT (in the Smar tCheck DATA directory) to DEFAULT.BAK. Then, copy one of the alternate DEFAULT.x xx files to DEFAULT.DAT: Microsoft C/C++ (includes Symantec) DEFAULT.MSC Borland C/C++ (include Watcom) DEFAULT.BOR Borland Object Pascal (Delphi 2.X) DEFAULT.DPH All of the above DEFAULT.ALL NOTE: By default, SmartCheck installs DEFAULT.MSC

----------------------------------------------------------------Copyright 1997, 1999 NuMega Lab, Compuware Corp. March 1999 readmevb.txt