## 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 the emulator included with the S60 5th Edition SDK. 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. A symbolics (.sym) file is also required 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 MyProject program

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

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

2. Launch the Carbide debugger and S60 SDK Emulator

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

The HelloCarbide application launches (Figure 2).

Figure 2 - MyProject application running on S60 Emulator

NOTE For SDKs prior to the S60 5th Edition it may be necessary to locate the installed application and manually launch it in the emulator or on the target device.

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

Figure 3 - Send Message to MyProject application

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

Figure 4 - Back in the CMyProjectAppUI::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