Friday, March 24, 2017

Troubleshooting for reverse engineering Microsoft Visual C++ 6.0

Troubleshooting for reverse engineering Microsoft Visual C++ 6.0

During the reverse engineering process, a log file is created that lists the detected errors. The file is written to <temp_dir>\<project_name>.txt (e.g. c:\temp\project.txt). Most, if not all, of the errors encountered occur in classes that use C++ templates. (The browse file API has several known bugs that affect its ability to handle C++ templates.)

Code features that are not reverse engineered by the Visio UML Add-In

  • Attribute types

  • Method return types

  • Parameter default values

  • Namespaces  If a class A is defined inside a namespace, the class will be reverse engineered, but the fact that it was part of a namespace will not be reverse engineered.

  • Several C++ keywords, including inline and friend, and volatile.

  • Abstract classes and methods  These are not identified as such in the reverse engineered model.

  • Template definitions  Instances of template classes are reverse engineered, but only as standard classes, not as parameterized classes.

Code features that are sometimes reverse engineered by the Visio UML Add-In

  • Method parameters Due to a bug in the browse file API, long parameter lists are not always reverse engineered.

  • Method parameter names  Parameter names are obtained from method definitions that occur outside the class definition. If a method is defined inside a class definition, then correct parameter names cannot be obtained. In this case, names are automatically generated.

Code features that are sometimes incorrectly reverse engineered by the Visio UML Add-In

  • Classes and class methods  Due to a bug in the browse file API, class names and class method names are sometimes corrupted. If a corrupted name is detected during reverse engineering, the element is not added to the UML model. This problem generally occurs in classes derived from C++ templates. Occasionally, name corruption isn't detected, in which case the corrupted name is added to the UML model.

No comments:

Post a Comment