## Debugging a Symbian OS Program

Use the Carbide.c++ debugger to debug a compiled Symbian OS program in an emulator or on-device. The same process works for other emulators and target devices as well.

NOTE This example uses an emulator. The steps are identical for on-device debugging, although a .sym file is not needed for emulator builds.

#### Debugging a Symbian OS program

NOTE You can only debug compiled programs. Use the Build Project command to compile project sources into a binary file if you do not already have an executable in the project. You will also need a symbolics ( .sym) file for debugging on a target device. Ensure that a .sym file has been created. If you are importing an existing application, you may have to rebuild the application and create a related .sym file. Make sure a .sym file has been created in the output directory.

1. Set a breakpoint in the HelloCarbide program

Open the \src\CHelloCarbideAppUI.cpp file and set a breakpoint in the HandleCommandL routine.

Figure 1 - Breakpoint set in CHelloCarbideAppUI::HandleCommandL routine.

2. Launch the Carbide.c++ debugger and S60 EPOC Emulator

Start the Carbide debugger which launches the S60 EPOC Emulator and installs the HelloCarbide application. For on-device debugging, the application is installed on the target device.

Figure 2 - S60 Emulator launches

3. Open the Installed directory within the S60 Emulator or your target device
Use the S60 Emulator controls to locate and open the Installation directory. Select Open from the Options menu (Figure 3).

Figure 3 - Open the Installed directory

4. Launch the HelloCarbide application

Use the S60 Emulator or target device controls to launch the HelloCarbide application (Figure 4).

Figure 4 - Launch the HelloCarbide application

The HelloCarbide application launches (Figure 5).

Figure 5 - HelloCarbide application running on S60 Emulator

5. Click the Options soft-key on the S60 Emulator to display the Select menu.
6. Choose the Message menu item and press the Select soft-key to send a message (Figure 6).

Figure 6 - Send Message to HelloCarbide application

The HandleCommandL breakpoint is hit in the program and control returns to the Carbide.c++ debugger (Figure 7). You can now set additional breakpoints, examine variables, or use the Debug view buttons to control the program.

Figure 7 - Back in the CHelloCarbideAppUI::HandleCommandL routine

That's it for this basic introduction to debugging with Carbide.c++.

##### Concepts

- Projects

##### Tasks

- Creating Projects
- Building Projects
- Creating a Launch Configuration