workbench3.2用户手册学习笔记四

本教程详细介绍了如何使用WindRiver Workbench创建、导入源文件、构建、连接目标、设置断点、单步执行代码、监视变量、运行应用程序、编辑源文件、跟踪错误和调试VxWorks 6.x项目。示例项目为ball,涉及C语言编程,涵盖了从创建项目到在VxWorks模拟器中运行和调试应用的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4 Building and Debugging a Sample Project

4.1 Introduction

本章将向您介绍 wind river workbench,以便您能够在实际操作的环境中熟悉它的透视图、视图和开发概念。本教程针对 VxWorks 6.x 进行了优化。 不需要特殊的硬件或系统设置。您可以在Workbench安装目录中找到球示例程序。
注:对于VxWorks 6.5.3,本章中的原则通常适用。但是,由于此示例使用的是可下载内核模块 (DKM) 项目,该项目不适用于 VxWorks 6.5.3,请参阅 Wind River Workbench By Example, VxWorks 6.5.3 Version 以获取合适的示例。在使用此示例程序的过程中,您将执行以下操作:

  • Create a project
  • Import source files
  • Build the project
  • Connect to a target
  • Set breakpoints
  • Step through code
  • Set a watch on a variable
  • Run code
  • Edit source files
  • Track build errors
  • Debug a project
  • Rebuild and rerun your code

4.2 Creating a Project and Running a Program

本章使用 C 语言编写的 ball 示例程序,并针对 VxWorks 6.x 平台进行了优化。该程序实现了一组在二维网格中弹跳的球。当球反弹时,它们会相互碰撞并与墙壁碰撞。您可以通过在外部移动循环处设置断点并在中断时使用属性继续,并在内存视图中观察全局网格数组变量来查看球的移动。
首先,在工作区中创建一个新项目,然后将ball源文件导入其中。

4.2.1 Starting Workbench

如果 Workbench 尚未在您的系统上运行,请立即使用以下任务之一启动它。

To start Workbench on a Windows host, do the following:

- 从开始菜单中,选择 All Programs > Wind River。
- 从下拉菜单中,选择 Workbench 3.x > Workbench 3.x。
- 指定工作区的名称和位置,然后单击 OK。

4.2.2 Returning to the Default Perspective

当你关闭工作台时,工作台会保留它的配置,这样在下次启动时,你就可以在开发中停止的地方继续工作。如果您已经尝试了打开透视图和移动视图,请在开始本章的示例之前切换回基本的设备开发透视图。

To return to the default perspective, do the following:

选择 Select Window > Open Perspective > Basic Device Development。

4.2.3 Creating the ball Project

在本节中,您将使用 the Basic Device Development perspective 和 the Wind River Workbench New Project wizard 为VxWorks 仿真模拟器创建 ball 项目。
您可以通过按主机的帮助键从向导中访问上下文相关帮助:

  • F1 on Windows
  • CTRL-F1 on Linux and Solaris

注意:Advanced Device Development 透视图在 File > New 下拉菜单上提供了常用的创建的项目类型的快捷方式。
Workbench 会在您关闭时保留其配置,以便下次启动时您可以从上次中断的地方继续。
To create the project for the VxWorks simulator, do the following:

1. 选择 File > New > Wind River Workbench Project。新项目向导将会出现。
2. 对于 Target operating system,选择 WorkbenchVxWorks 6.x,然后单击下一步。
3. 对于 Build type,选择 Downloadable Kernel Module,然后单击下一步。
4. 在 Project name 字段中,键入 ball。
5. 保持选中 Create project in workspace。默认的活动构建规范适用于 VxWorks 仿真模拟器,因此您不必调整任何其他设置。
6. 点击 Finish。
7. 球项目将会出现在 Project Explorer 中。

4.2.4 Importing Source Files Into Your Project

下一步是导入球项目的项目文件。

To import the ball sample project files, do the following:

1. 右键单击球项目文件夹,然后选择 Import。 将会出现导入向导。
2. 双击 General 以展开文件夹并查看内容,然后双击 File system。此时将显示导入向导的文件系统页面。
3. 单击 From directory 旁边的 Browse 按钮。 将出现从目录导入页面。
4. 导航到 installDir/workbench-3.x/samples/ball 目录,然后单击 OK。
   注意:请务必使用此目录中的文件,而不是文件 > 新建 > 示例菜单中可用的示例 C++ 程序的文件。
5. 在左侧窗格中选择 ball 复选框。将出现一个绿色复选标记,右侧窗格中文件的复选框也有复选标记。
6. 点击 Finish。

如果在 Project Explorer 中看不到 ball 项目文件夹的内容,请单击文件夹名称旁边的加号或向下箭头。请注意,项目文件显示为黑色,构建目标显示为绿色,只读文件显示为灰色。

4.2.5 Building the ball Project

本节向您展示如何构建球项目。

To build the ball project, do the following:

1. 在项目资源管理器中,右键单击 ball 文件夹并选择 Build Project。
2. 如果询问您是否希望 Workbench 生成包含路径,请单击 Continue。

构建输出将出现在屏幕底部的 Build Console 中,输出文件 ball.out 出现在 build spec > ball > Debug 文件夹中。

4.2.6 Connecting to the Target

通常,您必须先创建新的目标机连接定义,然后才能连接到新的目标机。有关如何执行此操作的更多信息,请参见 11. Connecting to Targets。但是,对于本教程,您可以使用远程系统视图中显示的预定义连接。

To connect to the target using VxWorks, do the following:

1. 在远程系统视图中,右键单击 vxsim0 (Wind River VxWorks 6.x)。
2. 选择 Connect ‘vxsim0’。
   一个 VxWorks 模拟器 shell 将在工作台窗口右下角的 Target Console 视图中打开,该视图位于选项卡式笔记本中。 连接详细信息显示在远程系统视图中。
   注意:目标控制台仅适用于 VxWorks 6.8。 旧版本的 VxWorks 将打开一个外部窗口来显示控制台。 您可以最小化外壳,但不要关闭它。
3. (可选)要查看内核任务或实时进程 (RTP) 的属性,在 Remote Systems 视图中,展开目标连接节点以查看 Kernel Tasks 和 Real Time Processes 文件夹的内容。然后,右键单击任务或进程,然后选择 Show in Properties,属性视图将会出现,显示一个相关属性和值的列表。

4.2.7 Running the ball Application in the Debugger

本节向您展示如何在调试器中启动 ball 应用程序。

To start the ball application using VxWorks, do the following:

1. 展开 ball 文件夹并选择 Build Targets。
2. 然后将会出现一个.out文件,在 Project Explorer 中右键单击 ball.out 文件并选择 Debug VxWorks Kernel Task。
   将出现 Debug Configurations 对话框,其中 ball.out 已作为启动名称的一部分填写。
3. 在 Entry Point 字段键入 main。
4. 点击 Debug。

4.2.8 Setting Up the Device Debug Perspective

我们是通过在内存视图中查看网格全局变量的内存地址来显示球程序的动作的。

To view the action of the ball program, do the following:

1. 如果内存视图尚未打开,请选择 Window > Show View > Other > Debug > Memory, 然后点击 OK.
   Memory 视图将会出现在 Workbench 窗口的右下角,在带有 Variables 和 Expressions 视图的选项卡式笔记本中。
2. 单击内存视图的标题栏,然后将其向左拖动,在包含任务视图和构建控制台的选项卡式笔记本上。等待一组堆叠文件夹的图标出现在光标处,然后放下视图。也就是将其拖到中间的视图中去。
3. 如果表达式视图尚未打开,请选择 Window > Show View > Other > Debug > Expressions,然后执行一下操作。
   a. 选中 “表达式” 选项卡并将其展开到足以查看表达式、类型和值等列。
   b. 在表达式列中,单击 Add new expression。
   c. 键入 grid,然后单击 enter。
   网格全局变量的内存地址将出现在值这一列中。它可能会因会话而异,例如,如果您使用GNU编译器而不是Wind River编译器进行编译,则它可能并不相同。

4.2.9 Stepping Through Code

此过程将带您完成 ball 示例程序中网格数组的初始化。

To step through the code of the ball program, do the following:

1. 按 F6(或使用 Debug 视图中的 Step Over 图标)两次,来实现程序从 main() 的入口点跳到对 srand() 的调用。
   使用 F6 两次会导致 Workbench 跳过并完成 gridInit( ) 的执行。(所有的运行控制都可以在运行菜单上使用,也可以作为调试视图中的工具栏图标使用。)
2. 在 Memory 视图中,单击 Monitors 工具栏中的 Add Memory Monitor 图标,输入从 4.2.8 Setting Up the Device Debug Perspective, p. 43中得到的网格阵列的值(地址)。然后点击 OK。
3. 调整 Memory 视图,以显示球将在其上弹跳的网格的框:
   a. 右键单击 Renderings 列并选择 Cell Size > 8 bytes。
   b. 拖动 Memory 视图的右边框或左边框以使其足够宽,并拖动顶部和底部边框以使其足够高以使窗口文本区域中的框全部显示出来。
   c. 在 你可以在“渲染” 窗格中看到正确的列之前请先在 Memory 视图中调整监视器和渲染窗格的相对大小。
注意:确保您在内存窗口中输入的地址对于网格全局变量是正确的。
盒子现在可能是空的,但随着程序的运行,代表不同类型球的字符(两个零、两个@符号和两个星号)出现在空盒子中,并与墙壁相互碰撞,并彼此相互碰撞。

4.2.10 Setting and Running to a Breakpoint

以下过程说明了如何设置断点并告诉应用程序运行直到到达断点。

To set and run to a breakpoint, do the following:

1. 在 main.c 中向下滚动,经过循环的三个初始化,并在以下 while 语句中设置断点,方法是双击 while 语句旁边的装订线。
   (装订线是编辑器视图左边缘的阴影条。它可能是蓝色的,并且可能很薄。)

在这里插入图片描述

   装订线中出现一个蓝点(它可能位于语法错误图标下方)。
   右侧的 Breakpoints 视图会显示所加断点的模块和行号:
2. 按 F8 键 (或单击调试视图工具栏中的 Resume 图标) 运行到断点。每次到达断点时,执行都会停止。每次恢复执行时,内存视图都会更改。下图中的高亮部分表示第一次刷新后的变化。

4.2.11 Modifying the Breakpoint to Execute Continuously

此过程向您展示如何更改断点的行为,以使应用程序不会在每次中断时停止执行。 相反,它会刷新显示。

To modify a breakpoint to execute continuously, do the following:

1. 右键单击装订线或断点视图中的断点,然后选择 Breakpoint Properties。 出现“行断点属性”对话框。
2. 单击 Continue on Break 复选框。
3. 点击 OK。
4. 按 F8 键或单击 Resume 按钮以观看 Memory 视图中的球反弹。

To stop the program, do the following:

1. 再次打开 Breakpoint Properties。
2. 清除 Continue on Break,然后单击 OK。球可能会再次反弹,但随后会停止。

4.3 Editing and Debugging Source Files

Workbench 支持编辑代码、构建项目、查找构建失败的位置以及跟踪和修复错误。

4.3.1 Using Bookmarks in Lines and Files

在源文件中添加书签与在书中放置书签类似:它允许您在以后通过在 Bookmarks 视图中查找感兴趣的项目。您可以从书签视图中为文件或其中的特定代码行添加书签。以下过程在源代码中引入错误并将其添加为书签。 后面的过程解释了如何识别由于错误导致构建没有完成; 如何找到错误; 以及如何重建项目。

Introducing an Error for this Tutorial

此过程将错误引入到 ball 项目代码中。

**To create a failed build, do the following:**

1. 通过单击 Workbench 窗口右上角的图标,切换回 Basic Device Development 透视图。
2. 在 Project Explorer 中,双击 main.c 以在编辑器中打开它。
3. 在 Outline 视图中,选择 main(void):int。编辑器会切换焦点以显示它。
4. 找到并删除掉 gridInit( );中的分号(;)

注意:Workbench 窗口底部的状态栏显示编辑器中光标所在的行号和列(61:16,删除分号后)。

Creating the Bookmark to the Error

此过程为包含您在上一个过程中引入的错误的行创建一个书签。

**To create the bookmark, do the following:**	 

1. 右键单击该行旁边编辑器的左侧装订线,然后选择 Add Bookmark。
2. 在 Add Bookmark 对话框中,输入书签名称 (或接受默认的gridInit( )),然后单击 OK。
   装订线中会出现一个小书签图标(它可能位于语法错误图标下方)。
3. 要保存有错误的文件,请单击主工具栏上的 Save 按钮。
4. 通过单击编辑器视图选项卡上的 X 来关闭所有打开的文件。

Locating and Viewing the Bookmark

您可以从 Bookmarks 视图为文件或其中的特定代码行添加书签。

**To locate and view bookmarks, do the following:**
1. 要打开书签选项卡,请选择 Window > Show View > Other > General > Bookmarks。书签视图显示项目中的所有书签。 因为这个项目中只有一个书签,所以列表中只出现了一个书签。
2. 双击该书签条目。 如果您接受默认名称,则它是 gridInit()。然后main.c 文件在编辑器中打开,带有书签的行会突出显示。
3. 使用 main.c 选项卡中的 X 关闭文件而不进行任何更改。(也就是说,留下错误,以便您可以按照下面的教程步骤进行操作,其中包括更正构建中的错误)。

4.3.2 Building a Project with Introduced Errors

Introducing an Error for this Tutorial, p. 48 中,您在 ball 程序源代码中引入了一个错误,您将在以下过程中修复该错误,该过程演示了如何使用 Workbench 查找和修复构建错误。

To fix build errors, do the following:

1. 在 Project Explorer 中,右键单击 ball 文件夹并选择 Build Project。
2. 如果出现有关包含搜索路径的提示,请单击 Continue。
   注意:如有必要,将 /usr/include 添加到包含搜索路径。
   构建输出显示在构建控制台选项卡中,条目也显示在问题选项卡中。 单击这些选项卡可在其内容之间来回移动(或重新排列您的窗口以同时查看它们)。
   因为您在 main.c 文件中创建了错误,所以在构建过程中会遇到错误。
   请注意,Workbench 在 Problems 视图中输入了一个任务,显示了错误的类型、错误所在的文件、文件的位置以及错误的位置。
   它还显示由于错误而在代码中的其他位置出现的警告。
3. 双击 Problems 视图中的错误行。编辑器关注(或刚刚过去)错误行,在红色圆圈中使用相同的白色 X 来标记文件中错误的位置。
4. 重新输入分号(;)之前步骤中删除的字符。在 main.c,gridInit( )之后。
5. 右键单击装订线中的书签图标,然后选择 Remove Bookmark。
6. 保存并关闭文件。

4.3.3 Rebuilding the Project Without Errors

本节向您展示如何在修复错误后重建项目。

To rebuild the ball project, do the following:

1. 右键单击项目树顶部的球文件夹。
2. 选择 Rebuild Project。
现在项目构建没有错误。

4.3.4 Displaying a File’s History

Workbench 跟踪对项目中的任何文件所做的所有更改。即截止此时,共对 main.c 文件进行了几处更改。

To display the change history on the main.c file, do the following:

1. 右键单击项目树中的文件并选择 Compare With > Local History。
   历史记录”选项卡打开。(如果打开了许多选项卡并且选项卡相对较小,则它可能仅标记为“H”。)历史视图的上部区域显示文件更改的日期和时间列表。
2. 双击列表条目之一。
   打开一个比较查看器对话框,将文件显示在左侧,与您双击的列表条目的日期和时间相同。文件显示的右侧是之前版本中的文件。
3. 将光标移到比较查看器的工具栏图标上以阅读提供的功能,例如将更改从左侧复制到右侧文件、移动到下一个差异或下一个更改等。
4. 关闭比较查看器。
   如果您看到保存资源错误通知 main.c 已被修改但仍处于打开状态,请单击“是”以保存您所做的更改。

注意:您还可以使用本地历史记录功能来恢复已删除的文件。右键单击文件所在的文件夹,选择从本地历史记录还原,选择要还原的文件,然后单击还原。

4.4 Using the Editor’s Code Development Features

Wind River Workbench Editor 提供代码完成、参数提示和括号匹配,可帮助您开发代码。编辑器可以模拟 vi 或 emacs 编辑器。 要设置您的偏好,请单击顶部工具栏中的相应图标。
有关编辑器首选项的更多信息,请参阅以下内容:
在 Workbench 中,请选择 Window > Preferences > General > Editor

4.4.1 Changing File Preferences

此过程向您展示如何更改文件的字体属性。

To change the properties for a source file, do the following:

1. 展开 ball 文件夹并双击 main.c。main.c 文件将会出现在编辑器中,使用固定字体和基于首选项的颜色语法突出显示。
2. 选择 Window > Preferences > General > Appearance > Colors and Fonts.
3. 展开 Colors and Fonts 窗格中的 Basic 文件夹,然后选择 Text Font。
4. 单击 edit 并选择:
   - 系列:Courier 10 Pitch(或原版以外的其他字体)
   - Style: Regular
   - Size: 10
5. 点击 OK 。
6. 如有必要,将 Preferences 对话框移开以显示 main.c 编辑器窗口。单击 Apply 以查看更改而不关闭对话框。
7. 探索并尝试其他偏好。 如果您更喜欢默认设置,请单击恢复默认值。
8. 点击 OK。

4.4.2 Navigating in the Source

您可以使用以下方法在源文件中找到自己的方式:

  • 在 outline 视图中,列出了编辑器中焦点文件中的元素和符号
  • Find 用于定位符号、元素和字符串的实用程序

Using the Outline View

在大纲视图中,单击列表中的任何项目以将编辑器的焦点集中在其声明上。 将鼠标悬停在工具栏中的按钮上以查看如何过滤视图中的名称列表。您可以对它们进行排序、隐藏字段和静态成员以及隐藏非公共成员。 (请注意,元素按类型排序。)大纲视图仅限于在编辑器中打开的文件中声明的名称。要查找出现在编辑器中的任何符号的声明,请在编辑器视图中右键单击该符号,然后单击打开声明,如下例所示。

To search for a declaration in gridInit( ), do the following:

1. 在 Outline 中,单击 main(void): int。
2. 在编辑器中,单击对 gridInit( ) 的调用以突出显示该行。
3. 右键单击 gridInit( ) 并选择声明。指定搜索范围:工作区、项目或工作集。
Search 选项卡显示球节点,您可以在其中声明了 gridInit( ) 的项目文件列表中打开该节点。

Finding Elements (Text Filtering)

您可以执行更高级的符号或元素搜索,如以下过程所示。

To perform an advanced symbol or element search, do the following:

1. 选择 Navigate > Open Element。
   然后一个打开元素对话框出现。 选择元素字段提供了按类型匹配过滤。 例如,要查找以 task 开头的所有名称,请开始在字段中输入。 当您键入字母 t、a 等时,显示的元素数量会变窄,因此您可以从列表中选择您想要的元素。
2. 键入 grid*ball。当您输入符号的模式(包括通配符)时,Workbench 会列出所有匹配的元素。 显示所有匹配 grid*Ball 的元素。
3. 突出显示一个并按 ENTER 键查看它的声明。
   Choose an element 字段同样支持通配符匹配。
   - 问号 (?) 匹配任何单个字母。
   - 星号 (*) 匹配任意数量的任意字母。
   - 美元符号 ($) 匹配字符串的结尾。
   例如,要查找以 0(零)结尾的所有名称,请使用过滤器 *0$。

Finding Strings

您可以通过以下方式在活动编辑器视图中查找和替换任何字符串:

  • 选择 Edit > Find/Replace(或使用 CTRL+F)。
  • 按 CTRL+K 打开 Find Next。
  • 按 CTRL+SHIFT+K 打开 Find Previous。

有关其他选择,请参见编辑菜单。
Search 菜单提供了一个类似于 grep 的搜索,用于在工作区或任何位置的任何文件中搜索字符串。

4.4.3 Using Code Completion to Suggest Elements

Code completion 操作会在输入代码时自动提示方法、属性和事件。

To use code completion, do the following:

1. 开始在编辑器中输入。
2. 在编辑器中右键单击并选择 Source > Content Assist。或者,您可以使用 CTRL+SPACE 显示一个弹出列表,其中包含基于您迄今为止键入的字母的有效选项。

To use code completion in the ball program’s main.c, do the following:

1. 将光标定位在函数 main( ) 中第一个 { 字符的右侧,然后按 ENTER。 请注意,光标会自动缩进大括号下方。
注意:要更改缩进、大括号样式和其他代码格式,请选择 Window > Preferences > C/C++> Code Style。
2. 开始输入 grid 并调用代码完成:g, r, CTRL+SPACE。随着您继续输入,您的选择范围会缩小。
3. 从选项中选择 gridAddBall(BALL*, pBall,point point void),然后按 ENTER 将例程添加到编辑器中的光标位置。

4.4.4 Getting Parameter Hints for Routine Data Types

参数提示描述例程接受的数据类型。 当您使用代码完成添加函数时,或者当您输入函数名称和左括号时,Workbench Editor 会自动显示参数提示。

To see the data type descriptions for a routine’s parameters, do the following:

1. 键入一个例程名称,后跟一个左括号(,例如,ballNew( ,当您键入左括号时,编辑器会提供右括号,并将光标放在两者之间。
2. Press CTRL+SHIFT+SPACE。
   出现参数提示,提醒您例程定义的参数类型。 如果您愿意,可以复制和粘贴它们。
3. (可选)通过在编辑器中右键单击并选择 Source > Content Assist 或使用 CTRL+SHIFT+SPACE 键盘快捷键,在输入代码时请求参数提示。

4.4.5 Finding Symbols in Source Files

在您正在使用的源文件中查找符号的最简单方法是在大纲视图中选择它,但有时这是不可能的。 Workbench 提供了其他查找符号的方法,如本节所述。

To find symbols in source files, do the following:

1. 如果它尚未打开,请先双击球项目的 main.c 文件将其打开。
2. 在大纲视图中选择 main(void): int。编辑器会立即切换焦点,并高亮显示 main()的声明。
3. main() 下面的几行是符号 gridInit()。 此符号不会出现在大纲视图中,因为该视图仅显示在编辑器中打开(并具有焦点)的文件中声明的符号。
   注意:将鼠标悬停在 gridInit( ) 上会显示一个弹出窗口,其中显示函数的注释和声明。
4. 要查看函数 gridInit( ) 的声明,请双击它,然后按 F3。 grid.c 文件在编辑器中自动打开,位于 gridInit( ) 的声明处。

4.4.6 Using Bracket Matching to Find Code Open and Close Sections

括号匹配可让您找到代码段(如函数、注释等)的结尾(或开头)。括号匹配对以下字符进行操作: ( ) (parentheses); [ ] (brackets); { } (braces); " " (quotes); /* */ (comments); and < > (C/C++ only)。

To use bracket matching, do the following:

1. 将光标定位在括号匹配字符之一(开始字符或结束字符)之后。
   一个由非常细的线组成的矩形包含了匹配的字符。如果光标出现在打开字符之后,则矩形将出现在相应的关闭字符之后。如果出现在结束字符之后,则它会出现在相应的打开字符之后。
2. 按 CTRL+SHIFT+P。光标移动到匹配字符之后。
3. 再次按 CTRL+SHIFT+P。光标回到原来的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pekingkenny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值