SYNOPSIS:
I have encountered a problem when running the debugger under certain circumstances. The error encountered is that running the debugger within visual studio 6.0 results in the pop up message:

"One or more breakpoints cannot be set and have been disabled. Execution will stop at the beginning of the program."

Even once the emulator is running I can not re-enable the disabled breakpoints or add others the debugger respects.

The debugger works as expected on the example code; at least as long as only one project (mmp) file is involved. The problem only seems to arise with multiple project files cordinated by the bld.inf file.

=========================================
DETAILS:

I will now go into the detailed circumstances in which I encounter the problem and in which circumstances I do not. I am hoping that someone can provide some insight into what is going wrong and if necessary submit a bug report to nokia concerning the problem.

I am building a variety of sub-projects at a time by listing multiple PRJ_MMPFILES in the bld.inf file. I also have one mmp file listed under PRJ_TESTMMPFILES in bld.inf.

example bld.inf file:
-----------------------------------------
PRJ_MMPFILES

exampleDLL\CreateStaticDLL.mmp
otherCode\OtherCode.mmp

PRJ_TESTMMPFILES

testCode\testframe.mmp support
-----------------------------------------

I am using the test frame code to try and unit test the other sub-projects. The testframe code is slightly modified from the Testframe example application listed in the Series 60 Examples distributed with the Series 60 SDK. Other than a few changes in the imports and necessary additions to the mmp file I am only modifying the RunTestsL() method of CTestExecutor.

I am building the code as directed in the documentation with the following commands:

prompt>bldmake bldfiles
prompt>abld build wins udeb
prompt>abld test build wins udeb

When I want the visual studio files I do the following:

prompt>abld makefile vc6
prompt>abld test makefile vc6

(I should mention that the dll projects currently have "exportunfrozen" and "srcdbg" specified in their mmp files.)

-----------------------------------------
Success Scenario:
-----------------------------------------
The following scenario causes no problem:

1) generate both the regular and test workspace files using abld.

2) Open the testframe.dsw workspace file in Visual Studio.

3) Using Project->"Insert Project into Workspace" within Visual Studio add the remaining workspace files. (This would be CreateStaticDLL.dsw and OtherCode.dsw following the above example bld.inf file.)

4) Set testframe as the active project.

5) Set appropriate breakpoints within the testframe code.

6) Hit F5 to start running the debugger. If not already done I select ...udeb\epoc.exe as the executable (as specified in the "Building and Running the SDK Examples" portion of the SDK documentation).

7) Click OK on the dialogue informing me that ...\EPOC.EXE does not contain debugging information.

8) Select and run the Testframe application within the emulator's applications browser.

Not only am I able to set and use breakpoints within all the projects, I am able to use the debugger to step into code crossing sub-project boundaries.

-----------------------------------------
Failure Scenario:
-----------------------------------------
The following scenario results in the breakpoints being disabled but the program running fine otherwise:

1) generate both the regular and test workspace files using abld.

2) Open any workspace file other than testframe.dsw in Visual Studio. (Say CreateStaticDLL.dsw)

3) Using Project->"Insert Project into Workspace" within Visual Studio add the remaining workspace files including testframe.dsw.

4) Set testframe as the active project.

5) Set appropriate breakpoints within the testframe code.

6) Hit F5 to start running the debugger. If not already done I select ...udeb\epoc.exe as the executable (as specified in the "Building and Running the SDK Examples" portion of the SDK documentation).

7) Click OK on the dialogue informing me that ...\EPOC.EXE does not contain debugging information.

8) Click OK on the dialogue stating: "One or more breakpoints cannot be set and have been disabled. Execution will stop at the beginning of the program." This disables any breakpoints I had set (and enabled) in step 5.

9) Press F5 once again to enable the emulator to continue to the point the applications browser can be seen.

10) Select and run the Testframe application within the emulator's applications browser.

Although the program runs fine (in this case the testframe code runs and logs the unit tests defined) I can't set or re-enable any breakpoints. Consequently I can't effectively run the debugger on the unit tests I have created. I can step slowly in the "Disassembly" window.

=========================================
REQUESTED HELP:

* What is causing the problem and what is the most expediant path to solve it?

* Is my approach to building a collection of libraries and client code following the pattern intended by the designers of the Symbian build system? Is it intended that I add projects to the visual studio workspace as I detailed in my success and failure scenarios?

* Have I uncovered a bug in the Symbian build system, and if so how do I report it?

* Does anyone have any suggestions concerning the best way to create and maintain clean unit tests for Symbian code?

The majority of my build and test experience is in Java and Perl. In Java junit and ant are the accepted standards, and in Perl there is a standard build and test framework provided with the distribution. Reading the documentation of the Symbian build system leads me to believe there are some very typical ways of organizing symbian code into a greater overall build/test system. Unfortunately I have found no examples or documentation beyond the individual project level.

=========================================
THANKS:

Thank you for the time and effort you have spent reading and hopefully responding to this posting.

Sincerely,

James Carpenter
nawkboy@yahoo.com