With the project group properly set up, you are now ready to explore some of
the debugging features you can take advantage of when using project groups. When
working with multiple components, it is possible to treat them all as independent
projects and completely finish one before ever working on another. In such a scenario,
you would test and debug each of your components separately. Then, after you have
built all the components in to actual DLLs and EXEs, you would combine them with
your main application and begin integration testing. If you were always able to
do things this way, and there were never any bugs missed, there would be no need
to test or debug in project groups. However, that doesn’t happen often.
Debugging within a project group is not any different from regular debugging.
The same techniques are used—breakpoints, errortrapping, and stepping through
code—but they apply across all the projects in the group. You can set breakpoints
in any of the projects, not just the startup. If that line is about to be executed,
it will pause at that point, just as you would expect. This can be useful in determining
exactly when an object is created, initialized, and terminated, and will even
work across multiple instances of one project. The Debugging Error-Trapping setting,
which can be set to Break on All Errors, Break in Class Module, or Break on Unhandled
Errors, behaves as it does with a normal project, but applies across all the projects
in a group. It is not possible to set different debugging options for individual
projects because these options are really environment-level options, not project-level
ones.
Stepping through the executing code is where the true power of project groups
becomes clear. It is possible to step, line-by-line, through the code of one project,
into the code of another. When dealing with ActiveX components, this could mean
hitting an object call in one project that takes you immediately to the code of
that object’s property or method, possibly passing through some initialization
code on the way.