娜诺卡.福兰克:Symbian和C++ SDK开发入门

来源:百度文库 编辑:偶看新闻 时间:2024/05/02 18:52:40
Symbian和C++ SDK开发入门之运行在Series 60 SDk中可以使用两个版本的模拟器可执行文件:一个版本包含符号调试信息,另一个是发布版本。发布版模拟器限制为只能评估或演示应用程序--它启动得很快,因为它不带有调试信息。

  两个版本都叫做epoc.exe,但是它们位于自己的子目录中。Epoc这个名字是历史遗留的--它是Symbian OS以前的操作系统的名称。

  在正常的开发活动中,经常使用模拟器的调试形式。根据你选择的IDE,你可以正常地使用调试版本或在"调试模式"中使用调试版本。能够在两种模式下运行同一个"调试模拟器"起初看起来有点混乱。

  有时候你可能希望启动模拟器,定位应用程序并运行它,而这仅仅是为了测试的目的。如果出现了严重的错误,模拟器和应用程序将以受到约束的方式关闭。

  还有些时候你可能希望在自己认为存在问题的特殊地方(代码中)设置断点(breakpoint),接着让IDE在"调试模式"下运行模拟器。接着你定位应用程序并运行它。与应用程序适当地交互操作将会遇到代码中的断点。在断点上,源代码将显示在IDE中,并且同时显示与应用程序相关的所有符号调试信息。接着你可以在受控制的情形下,使用IDE的调试特性一步一步地调试代码片断。你可以查看IDE显示的应用程序源代码、数据、调用堆栈和其它与调试相关的信息,帮助自己跟踪到代码或逻辑中的错误。



图1-3. Series 60平台1.2调试模拟器的应用程序表格和列表视图



图1-4.微软Visual C++ IDE下处于调试模式的HelloWorld应用程序

模拟器可执行文件位置

  Series 60 1.2 SDK发布版模拟器典型情况下位于下面的位置:

  对于Visual C++

\Symbian\6.1\Series60\Epoc32\Release\wins\urel\epoc.exe

  对于Borland C++

\Symbian\6.1\Series60\Epoc32\Release\winsb\urel\epoc.exe

  对于CodeWarrior

\Symbian\6.1\Series60\Epoc32\Release\winscw\urel\epoc.exe

  调试版模拟器典型情况下位于:

  对于Visual C++

\Symbian\6.1\Series60\Epoc32\Release\wins\udeb\epoc.exe

  对于Borland C++

\Symbian\6.1\Series60\Epoc32\Release\winsb\udeb\epoc.exe

  对于CodeWarrior

\Symbian\6.1\Series60\Epoc32\Release\winscw\udeb\epoc.exe

  精确的路径依赖于你在安装SDK的时候选择的选项。在Series 60 2.x SDK中模拟器的路径将非常类似--例如\Symbian\Series602_0\Epoc32\release\wins\udeb\epoc.exe。

  图1-3显示了Series 60 1.2模拟器。它启动时显示应用程序主菜单为表格视图或列表视图。

  Series 60 2.0模拟器启动的外形类似电话应用程序,你必须通过按下图1-3所示的应用程序按钮导航到应用程序菜单。无论使用哪种版本的Series 60平台,一般把模拟器可执行文件的调试(udeb)版本作为开发项目的默认选项--例如\Epoc32\Release\wins\udeb\epoc.exe。

  模拟器调试模式

  在模拟器的调试模式下运行应用程序的时候,源代码、函数调用堆栈、变量信息等在遇到代码断点的时候会立即显示出来,如图1-4所示。如果应用程序代码没有处在需要用户输入的位置,模拟器窗口本身可能消失了(它被最小化了)。

  从命令提示符运行模拟器

  如果需要从命令行运行调试模拟器,只需要打开命令提示符,把当前路径改变到epoc.exe应用程序所在的Series 60 SDK文件夹(例如\Symbian\6.1\Series60\Epoc32\Release\wins\udeb)并输入下面的内容:

epoc

  上面的命令将启动调试模拟器,接着你可以定位并运行自己的应用程序了,但是它并非处于调试模式之中。要使被调试的应用程序运行在模拟器的调试模式之下只能从IDE内部完成。如果要运行发布版模拟器,需要输入:

epoc -rel

  在Visual C++ IDE中运行模拟器

  在Visual C++ IDE中你按下Ctrl+F5或从菜单中选择Build|Execute Epoc.exe就可以启动模拟器的调试版本。这样将使模拟器处于非调试模式。作为代替,按下F5或从菜单中选择Build|Start Debug|Go将使模拟器处于调试模式。

  当你第一次运行某个Visual C++项目的模拟器的时候,会出现一个对话框向你询问可执行文件的名称。请导航到SDK的根目录的\Epoc32\Release\wins\udeb文件夹的epoc.exe文件。

  在Borland C++Builder 6和C++BuilderX IDE中运行模拟器

  你可以使用Tools|Mobile Build Tools菜单选项,选择Run Emulator来启动模拟器的调试版本。或者使用Run|Run菜单选项(F9),但是它会引起项目每次都重新建立--而这花费的时间可能很长。使用这个选项的时候,你可能需要在模拟器启动之前终止建立对话框("Compiling")。

  如果你在C++BuilderX中运行模拟器,使用Run|Debug Project菜单选项或按下Shift+F9。如果你希望重新建立项目并启动模拟器,选择Run|Run Project或按下F9。

  在CodeWarrior IDE中运行模拟器

  选择Project|Run菜单选项或按下Ctrl+F5运行模拟器。按下F5或使用Project|Debug菜单选项使模拟器运行在调试模式。
  定位和运行应用程序

  通过点击模拟器的招牌位图上的光标键的图片,或者使用PC键盘光标(箭头)键导航并选择HelloWorld应用程序。点击"Selection"按钮(在光标控制键的中间)启动应用程序。

注意

  没有特定图标的应用程序(在.aif文件中指定)将会被赋予一个默认的图标,它看起来像一片锯齿状拼盘。

  在某些SDK/IDE(例如Borland和CodeWarrior的一些版本)中,你建立的应用程序可能位于"Other"文件夹下,而不在主桌面上。如果出现这种情况,请导航并选择Other文件夹,接着通过点击"Selection"按钮打开它。导航并选择HelloWorld应用程序并点击"Selection"按钮调用该应用程序。

图1-5."HelloWorld"应用程序


  调试应用程序

  作为代替,你可以在IDE中使模拟器上运行的应用程序处于调试模式--这个过程验证依赖于使用的IDE。典型情况下,你需要首先在源代码的适当位置设置断点。

  启动处于调试模式的模拟器。由于要调试的是应用程序(本质上是动态链接库DLL),而不是模拟器本身,你需要导航并运行应用程序。该应用程序将会启动,碰到你设置的断点的时候执行会停止。接着你可以使用自己选择的IDE工具逐步执行应用程序的源代码。

  更多的IDE帮助

  本文没有不同IDE功能的更多介绍,因此如果你要查询更多的IDE帮助信息,可以通过Help菜单选项进行。

  对于微软Visual C++,你可以选择Help|Contents菜单选项,它在与IDE一起安装的MSDN中提供。

  对于Borland C++Builder 6,你可以使用Help菜单选项。你会发现除了标准的Borland帮助文件之外还有一个独立的Help|Borland C++ Mobile Edition Help页面。对于C++BuilderX,你可以选择Help|Help Topics,然后选择Mobile Development。

  对于Metrowerks CodeWarrior,有一个Help|Online Manuals菜单选项,它包含了使用Symbian OS时大量的有价值的信息。

  还有更多的特定IDE信息可以在线获得--例如到http://msdn.microsoft.com/链接查找Visual C++信息,到http://bdn.borland.com/链接查找Borland C++信息,到http://www.metro-werks.com/MW/Develop/Wireless/链接查找CodeWarrior信息。  Symbian和C++ SDK开发入门之应用程序  由于Series 60应用程序可以从命令提示符或IDE中建立,因此我们同时详细介绍了这两种方法。我们先从使用IDE提供的C++编译器建立运行在PC上的模拟器(也就是x86指令集)的项目开始。我们同时使用了调试建立,因此可以使用符号调试信息和内存漏洞检查(动态地检查堆上分配的内存是否被正确地释放了)。

  从命令行建立程序

  打开命令提示符并把当前路径改变到包含Series 60 SDK的驱动器/文件夹中。导航到包含项目定义(helloworld.mmp)和组件描述(bld.inf)文件的文件夹——例如:

\Symbian\Series602_0\EMCCSoft\HelloWorld\group

  上面的代码用于Series 60 2.x项目,或者

\Symbian\6.1\Series60\EMCCSoft\HelloWorld\group

  上面的代码用于Series 60 1.x项目。并输入:

bldmake bldfiles

  一两秒钟之后这个命令就完成了,它没有任何可视的输出。它使用bld.inf和helloworld.mmp文件生成了一个新文件abld.bat。这个命令文件一般是根据需要生成的。与bld.inf和.mmp文件不同,abld.bat在不同的IDE之间是不能迁移的,并且不应该手动修改它。

  输入下面的命令编译和链接项目:

abld build wins udeb

—用于Visual C++ abld build winsb udeb

—用于Borland C++

abld build winscw udeb —用于CodeWarrior

 Abld命令将为Series 60模拟器(wins、winscw或winsb)建立该项目(换句话说,就是编译和链接),并把调试信息包含在二进制可执行文件中。

  从IDE中建立程序

  项目(例如我们的示例HelloWorld应用程序)通常在某个IDE中建立和运行,因此我们需要使用bld.inf和HelloWorld.mmp文件建立特定IDE的项目文件。对于Visual C++来说,这种工作必须使用Symbian提供的工具在命令行上完成。对于Borland和CodeWarrior来说这是可选项,因为这两种IDE都可以导入bld.inf或.mmp文件来建立IDE项目文件。

  当我们从命令提示符开始工作的时候,如果abld.bat文件不存在,就有必要建立它;如果.mmp文件或bld.inf文件改变了也需要重新建立它。在命令提示符下输入下面的内容建立abld命令文件:

bldmake bldfiles

  使用微软Visual C++建立程序

  打开命令提示符,导航到HelloWorld项目的驱动器/项目文件夹,并输入:

abld makefile vc6

  这将建立适合微软Visual C++的项目和工作空间文件(helloworld.dsp和.dsw文件)。它们将位于\Epoc32\Build子文件夹结构下;其完整的路径依赖于SDK的位置,例如:

\Epoc32\Build\EMCCSoft\HelloWorld\HelloWorld\Wins

  通过在Visual C++中打开工作空间文件(helloworld.dsw),你可以编译或链接应用程序,这是通过按下F7或使用IDE菜单选项Build|Build HelloWorld.app实现的。

  使用Borland C++IDE Builder 6建立程序

  如果你使用Borland C++Builder 6移动版(它是基于Borland C++Builder 6个人版并增加移动插件构成的),你可以简单地把HelloWorld项目的bld.inf文件导入IDE中。使用File|New|Other菜单选项,接着选择对话框中的Mobile(移动)数据页的Import Mobile Application(导入移动应用程序)。浏览组件描述文件(bld.inf)的位置并打开它。

  使用Ctrl+F9或菜单中的Project|Make建立程序。为了建立并运行,使用F9或菜单中的Run|Run。请注意F9Run|Run将导致项目每次都重新建立。如果仅仅在模拟器上运行,使用Tools|Mobile Build Tools|Run Emulator工具|移动建立工具|运行模拟器)。IDE可能会提示你保存大量项目相关的文件,例如Borland项目(.bpr)、Borland项目组(.bpg)文件。这些文件保存的位置与你的bld.inf文件的文件夹相同。

  我们也可以执行独立的abld命令并且运行其它一些SDK工具(例如Tools|Mobile Build Tools菜单上的aifbuildersisar)。

  使用Borland C++BuilderX建立程序

  使用任何一种商业C++BuilderX产品的时候,你都可以简单地把HelloWorld项目的bld.inf文件导入IDE中。

  使用File|New并点击对象通道(Object Gallery)中的Mobile C++数据页。选择Import Symbian C++ Project(导入Symbian C++项目)。从下拉列表中选择正确的Series 60 SDK,浏览项目的bld.inf文件的位置。点击Next数据页,给项目取一个名字,点击Finish数据页,项目将会打开。按下Ctrl+F9Project|Make Project选择。按下F9或选择Run|Run Project或使用工具条项Make and Run运行项目。

  使用CodeWarrior IDE建立程序

  如果你使用的是Metrowerks CodeWarrior for Symbian(个人版2.5,其它的版本可能有稍微的不同),你可以简单地使用IDE菜单选项File|Import Project from .mmp File(文件|.mmp文件导入项目)来导入HelloWorld.mmp文件。

  这将运行项目转换向导。选择该项目使用的SDK,选择(或浏览).mmp文件,选择一种WINSCW平台(或让它空着)。Build变量的默认值是UDEB。使用F7或菜单中的Project|Make建立项目。

  CodeWarrior项目文件(.cmp、.xml、.resources和.pref文件)都会自动地建立在HelloWorld.mmp文件所在的目录中。

  你也可以选择通过命令行建立CodeWarrior IDE项目。运行前面描述的bldmake bldfiles,接着它会生成一个CodeWarrior IDE项目:

abld makefile cw_ide

  这将在目录中建立一个可以导入的项目文件HelloWorld.xml:

\Epoc32\Build\EMCCSoft\HelloWorld\HelloWorld\Winscw

  现在你可以使用CodeWarrior导入这个文件并生成一个本地项目(.mcp)文件。选择File|Import Project(导入项目)菜单选项,选中HelloWorld.xml文件,为项目选择一个名称(例如HelloWorld)。CodeWarrior将生成并载入该项目,你可以使用正常的IDE命令进行建立、运行、调试等操作了。