Version 2 (modified by, 16 years ago) (diff)

Adding info about missing variant.cfg update

IDEs for S60WebKit

This page contains information and recommendations about which IDE to use when developing on S60WebKit.

As mentioned in the environment setup instructions, the recommended version of the Carbide.c++ IDE is version 1.0.


Carbide.c++ version 1 is the primary recommendation because it's free software (in practice, quite a number of different IDEs are used).


Carbide.c++ version 1.0 does have some limitations, especially with importing a large code base such as S60WebKit into an 'IDE project'. When using version 1.0, people tend to edit the source in their favorite editor and then compile/run the emulator with the provided scripts. Carbide version 1.0 can still be used for debugging (see below).

Carbide.c++ version 1.2

See Marcus Groeber's comments regarding Carbide.c++ version 1.2 and S60WebKit:

What did actually work for me is build WebKit with Carbide.c++ 1.2 (due 
to the massively improved ability to import complex bld.inf files into 
the IDE, and then defer the building to the usual command line tools).

You won't be able to use the build.bat script that comes with WebKit, so 
you will need to set up a permanent "subst" of X: to the EPOCROOT of 
your 3rd Edition SDK by hand (note that "3rd Edition MR" will not work, 
unfortunately!), and create an additional SDK descriptor for devices.exe 
that refers to your X: drive as the EPOCROOT:

    Root is X:\
    Tools path is X:\

It may still be necessary to run the original build script at least once 
to copy the necessary support files in the right location, but after 
this, I was able to rebuild and debug Reindeer from inside Carbide.c++ 

Thanks Marcus!

[Added after original post:] You will also need to overwrite variant.cfg in your 3.0 SDK with the copy included with the browser source (in S60\S60Internals\ The reason is that build.bat also replaces variant.cfg in the SDK while building, and then reverts back again after it exits. This temporarily makes available a few specific macros that control the exact build environment that is expected.

So even if you have run build.bat once (which you must), you will also need to extract before using the IDE.

Debugging with Carbide.c++ Version 1.0

It is recommended that you get acquainted with Carbide.c++ version 1.0 functionality by following the tutorial withing Carbide with a sample Hello World Project before attempting to debug the S60WebKit code.

To set breakpoints in S60WebKit code for debugging with Carbide:

  • Build reindeer via the provided build scripts
  • Start Carbide.C++ Express
  • Select Menu Item: File->Import...
  • Highlight "Symbian OS Executable" and click Next
  • In Select Executable: field, enter "X:\Epoc32\release\winscw\udeb\WebUi.exe" and click Next
    • Confirm "New Project Name:" is "Debug WebUi.exe" and is selected,
    • Box "Create a Launch Configuration:" is checked and set to "Symbian OS Emulation", and
    • "Name:" is "Debug WebUi.exe"

Click Finish.

  • In new "Debug" window, enter the following for "Emulator or host application:" field:

Click Apply and then Debug

This should allow you to set breakpoints and debug the sources that make up the WebUi.exe binary only. To debug other Dlls/binaries that make up the Browser, do the following:

  • Return to the non-debug view of Carbide.
  • Under the C/C++ Project tab, highlight and right click on Debug !WebUi.exe and select Import...
  • Highlight Symbian OS Executable and click Next
  • In Select Executable: field, enter X:\Epoc32\release\winscw\udeb\!MemMan.dll and click Next

Note: this example is loading MemMan.dll but you can also select any other browser based binary file

Select radio button "Existing Project:", click Search and select "Debug WebUi.exe" ;

Uncheck the box "Create a Launch Configuration:" and click Finish

  • You can now start a debug session and set breakpoints in both WebUi.exe and MemMan.dll based source files.

To add addional S60WebKit browser binaries for debugging, just repeat the steps above.