In order to use nmake cpp with the Solaris C++ compiler the ppcc script must be used. This script first calls nmake cpp to create a preprocessed .i file, and then runs the compiler against the preprocessed file instead of the original source code. For more information as to why this is necessary and how it works see the cpp and ppcc FAQs.
The reason the Solaris debugger cannot find the original source code is because the Sparcworks C++ compiler doesn't use the filename specified in the preprocessed file, but uses the filename given on the command line instead, which in this case is the .i file generated from nmake cpp.
To get around this problem there is a modified ppcc script which can be used with the Solaris C++ compiler. Note, this script should only be used with the Solaris Sparcworks C++ compiler, do not use it with any other compilers or platforms.