Hex-Rays' blog

Hello Symbian! – Hex Rays

Written by   Ilfak Guilfanov | Mar 25, 2008

Yesterday I created my first Symbian program 🙂 Sure enough, it was a “hello world” and to tell the truth I did not write it myself. But it still took me 3 (three) hours to get it running on Nokia E51. The good side is that I learned a lot about possible failures with Symbian applications (there are quite many of them, some of them with cryptic error messages like “install failed”).

The main reason why it took so much time is that I used a sample file from Examples/Basics/HelloWorld in the SDK. I have no idea why this file is included in the SDK, because it is incomplete and even manually adding a .pkg file does not help. My manual pkg file had all types of problems (wrong vendor id, secureid, uid, install directory, etc). I tested all combinations trying to make the application to install. Finally I installed it on the device. “I did i!” I congratulated myself – and immediately noticed that the installed application is nowhere. The installer claims that it is on the device, I can see the \sys\bin\hellworld.exe file on the disk, but there is no icon to click on and no other means to launch it. That was disappointing, to tell the least.
If you think about it, this is an expected outcome. The sample application consisted of a single cpp file, no resources, to icons, nothing. I guess Symbian does not display an icon for an application if it was not linked into the sis file (a sound approach, if you ask me).
My problems ended when I located another helloworld in S60Ex\helloworldbasic. With all skills I learned with the other helloworld, it took me only a few moments to build, download, and run it. Don’t ask me why there are 2 different helloworlds but I’m glad that I went through this. Here are some good side effects of this failed endeavor:

  • the EFD utility displays detailed information about the latest (S60 9.1 3d edition) SIS files
  • IDA can disassemble them

I also found that Symbian supports on-device debugging on new devices. The Target Resident Kernel (TRK) from Metrowerks is used as a debugger server. The TRK seems to be documented. The obvious idea is to connect it to IDA and debug Symbian applications (and maybe even system software!) I’m not sure that this will work but it is worth trying.