SylixOS的RealEvo-IDE调试方法

1 适用范围

本文档适用于已熟悉SylixOS并且使用RealEvo-IDE进行开发调试的技术工程师。

2 概述

SylixOS 实现了一个功能强大的调试stub,可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。

按照调试对象的不同,调试手段可分为以下几类:

1.   应用程序调试(App工程)

2.   动态库调试(SharedLib工程)

3.   BSP调试(BSP工程)

4.   内核调试(KernelModule)

按照调试环境的不同,调试手段又可细分为以下几类:

1.   一键推送调试

2.   手动启动调试

3.   串口调试

4.   Attach 到进程调试

5.   多线程调试(Non-stop模式)

6.   条件断点调试

RealEvo-IDE集成开发环境沿用了eclipse的界面风格和使用习惯,因此在调试步骤上兼容eclipse调试方法。

本文主要以应用程序(App)调试为例,详细介绍RealEvo-IDE常用调试手段,并简单介绍动态库调试、BSP调试和内核调试的应用场景。

3 RealEvo-IDE调试

RealEvo-IDE 调试设置界面如图 3-1所示。在此界面可以配置不同的调试手段。

图3-1  调试设置界面

3.1 应用程序调试

应用程序SylixOS APP工程是ReadEvo-IDE调试中最常见的调试对象。调试应用程序依赖的 libvpmpdm.so(进程补丁)必须是 Debug 版本,否则将会因为 Release 版本的libvpmpdm.so 没有调试信息导致未知的错误,这个问题会在所有被调试应用程序链接的动态库(如:libcextern 等) 上出现。

3.1.1 一键推送调试

调试程序如程序清单 3-1 所示。

程序清单3-1  调试程序

#include <stdio.h>

int main (int argc, char **argv)

{

    int iCount = 1;

    int i;

 

    for(i = 0; i < 500; i++) {

        printf("%d.Hello SylixOS!\n", iCount);

        iCount++;

        sleep(1);

    }

    return  (0);

}

根据“《RealEvo-IDE使用手册》5.1节 一键推送调试”步骤,进入到调试界面,如图 32所示。

图3-2  调试界面

在工具栏“Window”→“Show View”界面可以调出变量监控、汇编指令等辅助调试的窗口。

3.1.2 手动启动调试

手动启动调试方法与一键推送调试方法仅仅是在调试步骤上有些区别,其目的都是让需要调试的程序进入debug模式,方便一步步定位bug的位置。两种调试方法都依赖于以太网接口。

具体调试步骤请参考《RealEvo-IDE使用手册》5.2节 手动启动调试。

3.1.3 串口调试

对于不支持以太网接口的设备,可以使用串口进行手动启动调试。

具体调试步骤请参考《RealEvo-IDE使用手册》5.3节 通过串口调试。

3.1.4 Attach到进程调试

当程序正在运行时(程序可能已运行了很久)出现了严重错误(程序并没有因为这个错误而停止),这个时候由于程序不能停止,我们就需要一种特殊方法来发现程序运行中存在的问题。Attach调试是一种能够对正在运行的程序进行调试的方法。

具体调试步骤请参考《RealEvo-IDE使用手册》5.5节 Attach到进程调试。

3.1.5 多线程调试(Non-stop模式)

调试多线程程序时,如果某个线程停在一个断点上,调试器会让整个程序挂起,直到你这个线程恢复运行,程序中的其他线程才会继续运行。这个限制使得被调试的程序不能够像真实环境中那样运行——当某个线程断在一个断点上,让其他线程并行运行。Non-stop模式下的程序调试保证了一个线程停在断点出,不会影响其它线程的并发运行。

具体调试步骤请参考《RealEvo-IDE使用手册》5.6节 Non-stop模式。

3.1.6 条件断点调试

当对程序bug已定位到是发生在一个循环当中,只在循环遍历了若干次以后,才会出现,

或者定位到程序中某个变量为一个特定的值,才会出现,而这个变量的值是在程序运行的过程中随机设置的。这个时候,条件断点调试方法会方便程序员迅速准确定位bug位置。

以程序清单 31为例,仅保留“iCount++”语句处的断点,操作步骤如图 33所示,可进行断点的条件设置。

图3-3  条件断点调试

3.2 动态库调试

动态库在程序编译时并不会被链接到目标代码中,而是在程序运行时才被载入,动态库可以在内存中被几个应用程序进程所共享,因此应用程序代码体积较小。这也是动态库被广泛使用的原因之一,SylixOS支持动态库开发和调试。

具体调试步骤请参考《RealEvo-IDE使用手册》5.4节 动态库调试。

3.3 BSP调试

SylixOS BSP即板级支持包工程,板级支持包中一般包含SylixOS在某个特有的硬件平台上运行所必须的驱动和初始化程序。

具体调试步骤请参考《RealEvo-Simulator使用手册》2.8节 新建调试。

4 参考资料

《RealEvo-IDE使用手册》

《RealEvo-QtSylixOS使用手册》

《SylixOS应用开发手册》

时间: 2024-08-26 14:25:31

SylixOS的RealEvo-IDE调试方法的相关文章

SylixOS调试方法详解——性能分析

1. SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件.目前RealEvo-IDE既支持自动推送调试.也支持传统的手动启动gdbserver的调试方式.在官方公布的使用手册中没有详细写出在日常开发中非常实用的几种调试方式,本文主要介绍性能分析的调试方法. 在日常开发过程中经常会遇到程序不够快的情况,但是不知道到底慢在哪里,往往是随意寻找函数优化,并没有没有真正定位到程序哪里慢,存在很大

SylixOS 调试方法详解——静态代码分析

1. SylixOS调试方法介绍 SylixOS 实现了一个功能强大的调试 stub,可在设备或模拟器上在线调试应用程序,RealEvo-IDE 也提供配套的调试插件.目前 RealEvo-IDE 既支持自动推送调试.也支持传统的手动启动 gdbserver 的调试方式.在官方公布的使用手册中没有详细写出在日常开发中非常实用的几种调试方式,我们通过新建几个App工程来做相应的演示,主要有代码静态分析.代码覆盖率检查.性能分析以及一个实战案列的演示,本文主要介绍代码静态分析调试. 2. Sylix

RealEvo IDE专家模式下应用工程MakeFile的修改

1. 适用范围 本文档适用于RealEvo IDE开发环境下的应用工程的自定义. 2. RealEvo IDE编译框架 2.1      Makefile文件与框架 RealEvo IDE开发环境下使用的Makefile文件包含常规的Makefile和mk文件.Makefile一般用来指定整个工程的总体编译规则,而mk文件主要描述工程下常规的需要生产的目标的编译规则等. 整个RealEvo IDE开发环境的编译框架主要是在BASE工程中定义的,主要存在于{$BASE}/libsylixos/mk

VC的常用调试方法

前言 VS是非常强大的IDE,所以掌握VSVC的常用方法,将会使得我们找出问题解决问题事半功倍. 目录 VSVC的常用调试方法 前言 1. Watch窗口查看伪变量 2. 查看指针指向的一序列值 3. 内存泄露查找 4. 调试Release版本 5. 远程调试 6. 函数断点 7. 数据断点. 8. 代码执行时间 9. 格式化数据 10. 格式化内存 Watch窗口查看伪变量 按MSDN的介绍,伪变量就是用来查看特定信息的术语.例如当调用的API失败时,可以用GetLastError获取对应的错

Nodejs 调试方法

这两天鼓捣了一下node项目,记录一下node的调试方法. 前端开发的调试可以用打日志(console.log)或者断点调试(debugger;配合Chrome或firebug)甚至IDE(webstorm)来调试. Node也差不多. 打日志 console.dir,console.log,引入 asserts 模块,对调试区域进行debug等方法, 这种方法平时检测一下还是可以的,真正有难缠的bug的时候会有种暴力穷举的感觉. 断点调试 断点调试也有几种方法 a.Node.js内置调试工具

[转] python程序的调试方法

qi09 原文 python程序的调试方法 本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程序 源码例子 例如,有模拟税收计算的程序: #!/usr/bin/python def debug_demo(val): if val <= 1600 : print "level 1" print 0 elif val <= 3500 : print "level 2" print (val - 1600) * 0.05 elif val

Cortex-M3/4的Hard Fault调试方法

1 Cortex-M3/4的Fault简介 Cortex-M3/4的Fault异常是由于非法的存储器访问(比如访问0地址.写只读存储位置等)和非法的程序行为(比如除以0等)等造成的.常见的4种异常及产生异常的情况如下: Bus Fault:在fetch指令.数据读写.fetch中断向量或中断时存储恢复寄存器栈情况下,检测到内存访问错误则产生Bus Fault. Memory Management Fault:访问了内存管理单元(MPU)定义的不合法的内存区域,比如向只读区域写入数据. Usage

《转》VS2010进行远程调试方法总结

---恢复内容开始--- 原文地址:http://blog.sina.com.cn/s/blog_a459dcf5010153o7.html 假设现在有A.B两台PC机. VS2010安装在A机器上,也就是说A机器是开发使用的机器. B机器是程序运行部署使用的机器,其IP为:192.168.1.129(局域网IP) 说明:如果B机器是外网IP下面方法照样适合,不过在使用的适合可能会出现无法附加到进程的错误. 如果出现无法附加到进程的错误.无法连接到设备.请按照步骤13进行设置. 1.根据vs20

应用在vs的ide调试环境下运行顺利,但是在bin目录直接运行exe报错的问题

在项目中需要获取摄像头的实时视频,因为不想安装第三方的安装文件来实现,经过筛选找到了easydarwin中的libEasyPlayer. 我们的项目语言是C#,libEasyPlayer的语言是C++的,在ide调试环境下通过dllimport方法直接调用libEasyPlayer很成功,视频顺利显示.但是在本机直接运行exe居然报错. 网上查资料,解决的办法有: 1.通过管理员身份打开cmd运行netsh winsocket reset命令. 结果:没有用. 2.dll版本的问题 通过vs自带