搜档网
当前位置:搜档网 › InstallShield2010学习笔记 - 编译调试构建

InstallShield2010学习笔记 - 编译调试构建

InstallShield2010学习笔记 -  编译调试构建
InstallShield2010学习笔记 -  编译调试构建

InstallShield学习笔记

调试项目

Revision History

Table of Contents

1前言 (1)

2编译(COMPILE) (2)

2.1编译选项设置 (2)

2.2编译功能导航 (3)

2.3编译信息输出 (3)

3调试(DEBUG) (4)

3.1调试选项设置 (4)

3.2调试功能导航 (5)

3.3调试功能介绍 (6)

3.4调试信息输出 (7)

3.5在客户终端机上调试 (7)

4构建(BUILD) (8)

4.1构建单个EXE文件 (8)

4.2批处理构建 (8)

5版本(RELEASE) (9)

5.1版本向导(R ELEASE W IZARD) (9)

1 前言

本文档是笔者在学习InstallShield IDE的过程中,查阅InstallShield 2009 IDE的联机帮助,结合个人学习心得体会,写出的学习笔记。鉴于篇幅有限,本文仅就InstallShield IDE提供的编译,调试,和构建功能作了一些基本介绍,仅供新手入门作参考之用。

若读者有意深入研究高级进阶内容,请参考InstallScript IDE(集成开发环境)自带的联机帮助,或者在网上搜寻参考资料 ( 附:InstallShield社区论坛:https://www.sodocs.net/doc/bb16967631.html,,

https://www.sodocs.net/doc/bb16967631.html,/forumdisplay.php?f=133)。

2 编译(Compile)

2.1 编译选项设置

用户可以先在InstallShield IDE中定义编译相关设置,请注意这些设置仅对当前被打开的项目有效。

用户从Build菜单列表中选择Settings菜单项,然后在弹出的对话框里打开Compile/Link 标签页,如下图所示:

2.2 编译功能导航

当开发者改动了项目的setup script 后,可以先编译此项目,以及早发现脚本语法错误及其它的配置问题。 在项目已经打开的情况下,开发者可以从Build 菜单列表中选择Compile 菜单,或者在工具条上点击Compile 按钮,从而启动编译当前项目。如下图所示:

2.3 编译信息输出

当编译完成后,InstallShield IDE 下面的输出窗口(Output Window)中的Compile 标签页会打开, 显示编译输出的文本信息(成功或者失败),如下图所示的Compile 窗口输出:

当本次编译失败时,毗邻的Tasks标签页会列出出错的代码行号和源头。当用户可以双击其中某一行时,脚本编辑窗口(Script Editor)自动跳转定位到脚本中的该行,如下图所示的Tasks窗口输出:

3 调试(Debug)

3.1 调试选项设置

用户可以先在InstallShield IDE中定义调试相关设置,请注意这些设置仅对当前被打开的项目有效。

用户从Build菜单列表中选择Settings菜单项,然后在弹出的对话框里打开Run/Debug标签页,如下图所示:

3.2 调试功能导航

InstallShield IDE提供了一个代码级别的调试器,可以供开发者深入脚本代码内部,去定位错误或者输出调试信息。

开发者可以从Build菜单列表选择Debug菜单,或者按下键盘上的F5按键,从而启动脚本调试器。

3.3 调试功能介绍

当开发者点击了Debug菜单或者按钮后(见3.1 调试功能导航所示图片),InstallShield IDE首先会build出安装程序,然后弹出调试器窗口供开发者使用,其界面如下:

调试器窗口工具栏上有一些用于调试的功能按钮(在Debug菜单列表中也可以找到对应的菜单项)。

点击按钮

点击按钮

点击按钮

点击按钮

此按钮跟上一按钮

点击按钮

点击按钮

点击按钮

点击按钮

3.4 调试信息输出

调试器窗口下部有两个窗口,在脚本被执行期间,它们会实时显示相关输出信息。

●Local窗口实时输出当前被执行函数(自定义)内部的所有局部变量(local variables)的值。

该窗口里面的信息只可读,不可修改。见下面左图.

●Watch窗口实时输出用户自行添加的监控项(watch)的值,观测项可以是变量名或常量名,

用户可以通过右键菜单添加或者在表格中直接输入。见下面右图.

3.5 在客户终端机上调试

前面的四小节(3.1~3.4),我们讨论的是在开发者本机上利用InstallShield IDE的调试方法。

在现实情况下,我们编译出来的的安装程序在本机上测试正常,然而发布给客户后,

在客户的终端机器上却出现各种问题。

因为客户机器上面一般没有安装InstallShield IDE开发环境,我们也不可能用开发者常规的方式来进行调试,

这时候我们就要使用下面的步骤进行在客户机器上进行现场调试:

1.从开发者本机上InstallShield安装目录System下面,找到名为ISDbg.exe程序,拷贝到将要执行调试的客户机器上面的任一文件夹(注:在该目录下有其帮助文档ISdbg.chm,可以一并拷贝过去,以便客户参考)。2.接着在客户机器上面,打开一个命令行窗口,敲入下面的命令来注册这个exe程序(假设其目录为C:\debug):

C:\debug\ISDbg.exe \REGSERVER

3.在开发者本机上编译并构建安装程序(若以前已经构建过,此步可以省略)。

4.从开发者本机上找该项目构建出来的文件夹(包括Disk Images子文件夹),拷贝到将要执行调试的客户机器上的任一文件夹。

例如,假设开发者本机上该项目的根目录是:C:\IS_Projects\AGIS\,那么要拷贝的文件夹是

C:\IS_Projects\AGIS\Media\SINGLE_EXE_IMAGE\Disk Images\Disk1

(注:以上路径中最后一层Disk1,在实际情况下可能是Disk2,Disk3等等,请酌情选择。

另外,如果开发者机器上的目录可以共享给将要执行调试的客户机器,这一步可以省略)

5.在客户机器上,打开一个命令行窗口,使用/d参数调用安装程序(比如Setup.exe),该参数后面紧跟将要生成的log文件的路径,比如下面的命令行例子:

C:\debug\Setup.exe /d”C:\debug”

此时安装程序界面会照常弹出,供客户操作完成安装。同时InstallShield的Debugger窗口也会显示,并随着客户在安装程序界面上的操作,该窗口会实时显示当前执行的代码,并输出当前的局部变量,当然客户也可以自己添加的监控项(参见3.4 调试信息输出)

4 构建(Build)

4.1 构建单个EXE文件

在项目编译没有错误发生的情况下,我们可以构建出最终的可执行型安装程序(*.exe)。

这个操作非常简单,用户可以在Build菜单列表中选择Build或Refresh Build,然后等待项目编译和构建完毕,在项目的$\Media\SINGLE_EXE_IMAGE\Package目录下会看到生成的EXE文件,见下图:

(注:Build会执行完整的构建,而Refresh Build只会重建上次build之后被修改的部分)

4.2 批处理构建

用户也可以使用批构建(Batch Build)方式,一次构建预先定义的各个版本(release)和单个的EXE程序文件。

在InstallShield IDE中,打开Build菜单列表,选择Batch Build菜单项,然后会看到如下左图所示的对话框。

勾选之后,点击Build按钮,即开始了批构建。完毕后,在项目的Media文件夹下面可以看到各自生成的子文件夹,如下右图所示:

5 版本(Release)

在安装程序被发布给测试人员或者最终用户之前,开发者应该创建一个对应的版本(release)。

一个版本配置了一些安装相关的信息,也包含了将被发布到软盘,光盘,文件夹,或者其它媒介载体上的文件。

创建版本最常见的方式是使用InstallShield IDE自带的版本向导(Release Wizard)。

5.1 版本向导(Release Wizard)

版本向导(Release Wizard)是InstallShield提供的一个辅助功能,它提供了十五个连续的配置页面,

引导用户逐步填入各类配置信息,最后根据收集的配置信息生成该版本所包含的数据文件和执行文件,

这些文件可以被直接打包发送给最终用户,或者烧录到光盘等媒介载体作为安装盘。

在InstallShield IDE界面上,点击菜单栏上的Build菜单,然后在其展开的列表中点击菜单(或在工具栏上点击按钮), 此时版本向导对话框会弹出。

下面我们对它的十五个配置页面逐一说明(注:某些配置页面仅在某些特定类型的安装项目才出现):

1.第一个页面,是Welcome页面,请直接点击Next按钮进入下一页面。

2.第二个页面,是Specify a Release页面,可以输入一个新release name或者选择现有的某个release。

3.第三个页面,是Media Type页面,可以选择CD-ROM, Custom, Network Image等作为此版本发布使用的媒介载体(注:如果选择的类型是Custom,页面下面的Format Size文本框会激活,供用户输入) 4.第四个页面,是General Options页面,配置安装程序的一些属性信息。

5.第五个页面,是Password页面,允许设置一个密码,在安装程序运行之前会要求用户输入该密码并验证。

6.第六个页面,是Platforms页面,选择安装程序支持的所有操作系统平台。

(注:如果安装程序中的某个component关联的平台,没有在这个页面选中,那么该component不会被打包到这个release中)

7.第七个页面,是Setup Languages页面,选择安装程序支持的所有语言,从而最终用户在运行该安装程序时可以选择以某种语言安装。

8.第八个页面,是Features页面,选择需要打包进安装程序的features。

9.第九个页面,是Media Layout页面,选择以Cabinet File, CDROM Folder, 或Custom格式来打包features 所包含的文件。

(注:若选择Custom,下一页面会是Custom Feature Layout,跟第八个页面类似,此处不表)

10.第十个页面,是User Interfaces页面,选择某个皮肤文件(*.skin),应用给安装程序。

11.第十一个页面,是Internet Options页面,配置安装程序在被运行时跟internet相关的一些选项。

12.第十二个页面,是Digital Signature页面,可以为安装程序添加数字证书。

13.第十三个页面,是Update页面,配置以Update模式运行安装时的行为,可以选择全部重新安装,或者只安装此页面中被选择的组件。

14.第十四个页面,是Postbuild Options页面,配置当前build完成之后额外执行的一些动作,比如上传拷贝一些文件,执行批处理脚本等。

15.第十五个页面,是Summary页面,汇总显示了前面所有页面收集的配置信息。

若确认没有问题,可以点击Finish按钮开始创建release (选项Build the Release选择应该被勾选上);

若想修改某部分配置,可以点击Back按钮回退到对应页面进行修改。

编译实验报告+源代码

课程设计报告 ( 2013-- 2014年度第1学期) 名称:编译技术课程设计B 题目:简单编译程序的设计与实现院系:计算机系 班级:XXX 学号:XXX 学生姓名:XXX 指导教师:XXX 设计周数:XXX 成绩: 日期:XX 年XX 月

实验一.词法分析器的设计与实现 一、课程设计(综合实验)的目的与要求 1.1 词法分析器设计的实验目的 本实验是为计算机科学与技术专业的学生在学习《编译技术》课程后,为加深对课堂教学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译程序设计的原理和技术设计出词法分析器,了解扫描器的组成结构,不同种类单词的识别方法。能使得学生在设计和调试编译程序的能力方面有所提高。为将来设计、分析编译程序打下良好的基础。 1.2 词法分析器设计的实验要求 设计一个扫描器,该扫描器是一个子程序,其输入是源程序字符串,每调用一次识别并输出一个单词符号。为了避免超前搜索,提高运行效率,简化扫描器的设计,假设该程序设计语言中,基本字(也称关键词)不能做一般标识符用,如果基本字、标识符和常数之间没有确定的运算符或界符作间隔,则用空白作间隔。 单词符号及其内部表示如表1-1所示,单词符号中标识符由一个字母后跟多个字母、数字组成,常数由多个十进制数字组成。单词符号的内部表示,即单词的输出形式为二元式:(种别编码,单词的属性值)。 表1-1 单词符号及其内部表示

二、设计(实验)正文 1.词法分析器流程图 2.词法分析器设计程序代码 // first.cpp : 定义控制台应用程序的入口点。// #include"stdafx.h" #include #include using namespace std; int what(char a) { if((int(a)>=48)&&(int(a)<=57)) {

百格测试标准图文稿

百格测试标准 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

G B9286-98百格测试标准: 1范围 1.1本标准规定了在以直角网格图形切割涂层穿透至底材时来评定涂层从底材上脱离的抗性的一种试验方法。用这种经验性的试验程序测得的性能,除了取决于该涂料对上道涂层或底材的附着力外,还取决于其他各种因素。所以不能将这个试验程序看作是测定附着力的一种方法。 注1:虽然本试验主要规定用于实验室,但也适用于现场试验。 1.2所规定的方法可用作通过/不通过,或在适宜的场合,可用作一种六级分级试验(见8.3)。当用于多层涂层体系时,可用来评定该涂层体系中各道涂层从每道其他涂层脱离的抗性。 1.3本试验可在涂有罩面漆的物体上和/或特制试样上进行。 虽然本试验方法适用于硬质底材(钢)和软质底材(木材和塑料)上的涂料,但这些不同底材需要采用一种不同的试验步骤(见第7章)。 本试验方法不适用于涂膜厚度大于250μm的涂层,也不适用于有纹理的涂层。 注2:当应用于设计成凹凸不平的图案表面的涂层时,该方法所得的结果会有较大的偏差。 2引用标准 下列标准所包含的条文,通过在本标准中引用而构成为本标准的条文。本标准出版时,所示版本均为有效。所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版本的可能性。 GB/T1727—92漆膜一般制备法 GB3186—82(89)涂料产品的取样(neqISO1512:1978等) GB/T9271—88色漆和清漆标准试板(eqvISO1514:1984) GB9278—88涂料试样状态调节和试验的温湿度(eqvISO3270:1984)GB/T13452.2—92色漆和清漆漆膜厚度的测定(eqvISO2808:1974) 3需要的补充资料 对于任何特定应用而言,本标准中规定的试验方法,需要用补充资料来加以完善。这些补充资料的项目在附录A中列出。 4仪器 4.1切割刀具 确保切割刀具有规定的形状和刀刃情况良好是特别重要的。 4.1.1下面列出一些适宜的切割工具,如图1a)和1b)所示: a)单刃切割刀具的刀刃为20°~30°,以及其他尺寸,如图1a)规定。 b)六个切割刀的多刃切割刀具,刀刃间隔为1mm或2mm,如图1b)规定。

ccs33中建立-编译-调试工程及常见错误讲解.

Part1:ccs3.3中新建一个DM6437的示例工程 1、连接好板子,将板子上仿真器的usb口插到电脑上,启动ccs后,ccs会去获取板子信息并在打开的文件目录中自动生成一个文件,如图所示:笔者使用的是6437的板子 2、用file-new选择建立一个dsp/bios文件 在打开的对话框中选择你使用的板子的型号,如下图: 3、这个时候ccs为我们建立了一个bios文件,以图表显示,里面按照所选板子的类型添加相应的硬件和其他模块。保存这个文件到工程目录下先,文件类型为tcf。 4、保存这个文件的同时,ccs按照bios中的配置在当前目录下自动生成了一个cmd文件。此时将tcf文件和这个cmd文件同时添加到工程中,使用 5、然后需要修改一个编译选项,点击下图所示选项进去:

6、打开后在编译选项对话框总会看到一个命令行,其中最后一句是-mv6400,因为用的是6467的板子,所以这个选项要修改成-mv64+;否则编译会报错:编译选项不正确;但并非所有类型的板子都要改,这个只针对型号为64+的板子。 7、file-new-source file建立一个c源文件,保存并加入到工程中。 以下是示例程序: #include #include #include Int main(Int argc, String argv[])//main函数的类型必须这样写 { unsigned int i; unsigned int sum=0; for(i = 0; i<=100; i++ ) {

sum += i; } printf("the sum = %d .\n",sum); printf("the program run over!\n"); printf("the program run over!\n");} 注意:1)如果想要printf正确输出信息,需要添加对应平台的rts64plus.lib文件。这里是64+平台所以是在C:\CCStudio_v3.3\C6000\cgtools\lib目录下的rts64plus.lib文件,否则ccs 会提示如下警告和错误: >> warning: entry point symbol _c_int00 undefined undefined first referenced symbol in file --------- ---------------- _printf E:\\WorkContent\\projectExample\\Test\\Debug\\test.obj >> error: symbol referencing errors - './Debug/Test.out' not built 2)如果想要printf正确输出信息,cmd文件中必须指定heap的大小,即cmd文件这样写: -c -stack 0x00001000 /* Stack Size */ -heap 0x00001000 /* Heap Size */ //前面这三项必不可少 MEMORY { L2RAM: o = 0x10800000 l = 0x00020000 DDR2: o = 0x80000000 l = 0x10000000 } SECTIONS { .bss > L2RAM .cinit > L2RAM .cio > L2RAM .const > L2RAM .data > L2RAM .far > L2RAM .stack > L2RAM .switch > L2RAM .sysmem > L2RAM .text > L2RAM .ddr2 > DDR2 }

linux实验报告3 Linux上C程序编译,调试和工程文件管理

深圳大学实验报告 课程名称:Linux操作系统 实验项目名称:Linux上C程序编译,调试和工程文件管理学院:计算机与软件学院 专业:软件工程 指导教师:冯禹洪 报告人:文成学号:2011150259 班级:02 实验时间:2013/12/31 实验报告提交时间:2013/12/31 教务处制

一、实验目标: 熟悉Linux上C程序设计环境,包括以下内容: 1. 联机帮助man命令 2. 编译工具gcc的使用 3. 熟悉使用gdb来调试程序 4. 熟悉C工程文件的管理工具makefile 二、实验环境与工件 湖边Linux实验室 Fedora 13 三、实验内容与步骤 1.动态库函数可以在多个应用程序之间共享,可以减少应用程序文件的容量和 应用程序的装载时间。因此,熟悉构建动态库可以提高软件的编写质量。请跟随以下步骤构建动态库message,并用其编写程序、编译和运行。(40分) 1.1编写源程序message.c(见图1)和main.c(见图2) 图1. message.c源程序 图2.main.c源程序 1.2用以下命令对message.c进行编译,其中,“-fPIC”选项是告诉gcc产生的 代码不要包含对函数和变量具体内存位置的引用。

1.3以上命令将获得目标文件message.o,使用以下命令建立共享函数库 message: 1.4使用1.3获得的共享函数库来编译main.c文件 1.5设置共享函数库搜索路径 1.6运行程序并附上结果 1.7构建静态可执行程序 1.7.1$gcc –c message.c 1.7.2$ar –crv libmsg.a message.o 1.7.3$gcc –o main main.c –L./ -lmsg 1.7.4$./main 1.8运行以下两个命令并截图说明结果: $ldd goodbye $ldd main $ls –l goodbye main /*附加题:经观察,如果用ubuntu, main 和googbye的大小在一些发行版本下没有区别,如果实验如此,请尝试解释这一现象。附加题目,平时成绩+5分,超过40分不算。*/ 2.图3-4中的reverse程序是有bug的,请使用gdb去观察程序的行为,对关键 行为截图说明,定位错误(截图说明)并修正程序bug。附上修正的程序及其运行结果。(40分) 图3. reverse.h头文件

VC++6.0中如何编译运行及调试C语言程序

VC++6.0中如何编译运行调试C语言程序1.启动VC++6.0 (如下图) 2.单个源文件的编译运行 例如下面的源代码 #include void main() { int i,sum=0; for(i=1;i<=10;i++) { sum=sum+i; } printf("sum=%d\n",sum); }

打开VC++6.0,如图1所示 (图1)选择“文件”→“新建”,打开如图2所示 (图2)

选择“文件”项,如图3所示 (图3) 选择“C++ Source File”项,并在“文件名”项目下输入“sum.c”如图4所示 (图4)

单击“确定”,打开如图5所示 (图5) 输入如上源代码,如图6所示 (图6) 选择按编译按钮调试程序,看看有没有错误,有的话改正,没有的话就可以再按连接按钮检查连接(多文件工程时常用,检查文件间是否正常连接)。

(图7) 在下端的输出窗口会有错误和警告的提示,如果没有错误选择“执行”(或按Ctrl+F5组合键)即可出现运行结果,如图8所示 (图8)

3.多个源文件的编译运行 以上是运行单个源文件的情况,但是在程序设计时,往往是由几个人各自独立编写不同的程序,显然这些程序是不能写在一起进行编译的,这时就需要建立项目工作区来完成几个独立程序的编译,具体方法如下。 首先建立两个文本文件,分别命名为“file1.c”和“file.c”,分别在两个文件中输入如下两个源代码,然后保存。 源代码1: #include void main() { void sum(); sum(); } 源代码2: #include void sum() { int i,sum=0; for(i=1;i<=10;i++) { sum=sum+i; } printf("sum=%d\n",sum); } 打开VC++6.0,选择“文件”→“新建”打开如图9所示

GB9286百格测试标准

GB9286-98百格测试标准: 1 范围 1.1 本标准规定了在以直角网格图形切割涂层穿透至底材时来评定涂层从底材上脱离的抗性的一种试验方法。用这种经验性的试验程序测得的性能,除了取决于该涂料对上道涂层或底材的附着力外,还取决于其他各种因素。所以不能将这个试验程序看作是测定附着力的一种方法。注1:虽然本试验主要规定用于实验室,但也适用于现场试验。 1.2 所规定的方法可用作通过/不通过,或在适宜的场合,可用作一种六级分级试验(见 8.3)。当用于多层涂层体系时,可用来评定该涂层体系中各道涂层从每道其他涂层脱离的抗性。 1.3 本试验可在涂有罩面漆的物体上和/或特制试样上进行。 虽然本试验方法适用于硬质底材(钢)和软质底材(木材和塑料)上的涂料,但这些不同底材需要采用一种不同的试验步骤(见第7章)。 本试验方法不适用于涂膜厚度大于250μm的涂层,也不适用于有纹理的涂层。 注2:当应用于设计成凹凸不平的图案表面的涂层时,该方法所得的结果会有较大的偏差。 2 引用标准 下列标准所包含的条文,通过在本标准中引用而构成为本标准的条文。本标准出版时,所示版本均为有效。所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版本的可能性。 GB/T 1727—92 漆膜一般制备法 GB 3186—82(89)涂料产品的取样(neq ISO 1512:1978等) GB/T 9271—88 色漆和清漆标准试板(eqv ISO 1514:1984) GB 9278—88 涂料试样状态调节和试验的温湿度(eqv ISO 3270:1984) GB/T 13452.2—92 色漆和清漆漆膜厚度的测定(eqv ISO 2808:1974) 3 需要的补充资料 对于任何特定应用而言,本标准中规定的试验方法,需要用补充资料来加以完善。这些补充资料的项目在附录A中列出。 4 仪器 4.1 切割刀具 确保切割刀具有规定的形状和刀刃情况良好是特别重要的。 4.1.1 下面列出一些适宜的切割工具,如图1a)和1b)所示: a)单刃切割刀具的刀刃为20°~30 °,以及其他尺寸,如图1a)规定。 b)六个切割刀的多刃切割刀具,刀刃间隔为1mm或2mm,如图1b)规定。 在所有情况下,单刃切割刀具是优先选用的刀具,即适用于硬质或软底材上的各种涂层。多刃刀具不适用于厚涂层(>120μm)或坚硬涂层,或施涂在软底材上的涂层。 4.1.2 4.1.1 规定的刀具适用于手工操作,虽然这是较常用方法。刀具也可以安装在获得更均匀切割的马达驱动的仪器上,应用仪器的操作程序应经有关双方商定。 4.2 导向和刀刃间隔装置 为了把间隔切割得正确,当用单刃切割刀具时,需要一系列导向和刀刃间隔装置,一个适用的装置如图2所示。 4.3 软毛刷 4.4 透明的压敏胶粘带 采用的胶粘带,宽25mm,粘着力(10±1)N/25mm或商定。 4.5 目视放大镜 手把式的,放大倍数为2倍或3倍。 5 采样 按GB3186的规定采取受试产品的代表性样品。 6 试板 6.1 底材 除非另有商定,从GB/T 9271规定的那些底材中挑选一种底材。试板应该平整且没有变形。试板的尺寸应是能允许试验在三个不同位置进行,此三个位置的相互间距和与试板边缘间距均不小于5mm。 当试板是由较软的材料(例如木材)制成时,其最小厚度应为10mm。当试板由硬的材料制成

Qmake 编译调试

Qmake 工具编译调试 2015年4月9日星期四18:38:06 1、确定qmaek 路径 [root@roger ~]# which qmake /usr/lib/qt-3.3/bin/qmake [root@roger ~]# which qmake-3520a /usr/local/qt-4.5.3/bin/qmake-3520a [root@roger ~]# which qmake-9260 /usr/local/arm/qte/bin/qmake-9260 [root@roger ~]# 本机共存三个版本的qmake,根据后缀名进行区分。 如果显示的路径不是所需要的已安装qt 版本,说明未将新版本的bin路径添加进入$PATH,使用export PATH="/usr/local/qt-4.5.3/bin:$PATH" 导入即可。 2、查看 qmake 的配置文件【重中之重】 [root@roger ~]# echo $QMAKESPEC /usr/local/arm/qte/mkspecs/qws/linux-arm-g++ [root@roger ~]# (若显示为空,使用 export QMAKESPEC=/usr/local/qt-4.5.3/mkspecs/qws/linux-arm-g++ 自定义设置即可;亦可直接编辑系统变量文件#vim /etc/profile) 由此可知,默认配置是qmake-9260 的arm板的编译版本;如需要编译其他配置的编译选项,可如下: qmake -spec /usr/local/arm/qte/mkspecs/qws/linux-arm-g++ -o Makefile -spec 即指定编译环境,其后为配置文件所在的目录; /usr/local/arm/qte/mkspecs/qws/linux-arm-g++/qmake.conf 主要内容如下:

百格测试方法

*2006/06/02 部品規格書

Contents Page 1.部品構造(Structure): (3) 1-1部品規格( Spec): (3) 1-1-2特性規格(Characteristic specification): (3) 1-2實物外觀(Part photo): (6) 2.檢驗規格(Inspection spec): (6) 3.包裝規格(Package spec): (6) 4.環保要求(Deleterious Substance and Standard of Highest Content): (6) 4-1 部品(Component): (6) 4-2 包裝(Package): (6) 5.保存條件及有限期限(Storage conditions and life): (6) 6.包裝規格(Package Spec): (7) 7.工程圖(Drawing): (10) 8.客戶端檢驗規格(Customer Inspection spec): (11)

1-1-2特性規格(Characteristic specification)

Appendix 1:百格測試 1. 使用Elcometer N-1540百格刀(共11齒, 每齒間隔1mm)於被測物表面之水平、垂直 方向各劃1刀, 刀體需與基版傾斜45度角(如下圖1)。 2. 以3M 610膠帶平行黏著於其中一個方向, 黏著5mins後, 以約60度角, 1~2mm/sec. 速度撕離膠帶(如下圖2)。 3. 以放大鏡觀察剝離情形,依圖3判定。 圖1 圖2

移动APP测试之Monkey Test 运用

移动APP测试之Monkey Test 运用 Monkey是Android平台自动化测试的一种手段,可以在模拟器里或实际设备中运行,它向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等,实现对正在开发的应用程序进行压力测试。 当然对于移动APP测试,monkey测试出了压力测试外,也可以做做简单的机型配适,就是测试App是否会出现crash等异常,以此来判读其释放与机型适配,可以发现程序无响应问题和崩溃问题。 接下来简单说说: Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar; Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey; 特征 1、测试的对象仅为应用程序包,有一定的局限性。 2、Monky测试使用的事件流数据流是随机的,不能进行自定义。 3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置。 这样就可以通过在CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了。 基本使用 1. 进入monkey 命令:adb shell/system/bin/monkey 2. 运行monkey 命令:adb shell monkey 是指随机发送事件数 adb shell monkey 100,运行monkey并执行了100件随机事件。 3. monkey常规类命令 adb shell monkey -h 显示monkey参数帮助信息usage adb shell monkey -v 打印出日志信息,每个-v将增加反馈信息的级别,最多支持3个-v 4. monkey事件类命令

编译技术的发展和应用

编译技术的发展和应用 据说第一个编译程序的出现是在20世纪50年代早期,很难讲出确切的时间,因为当初大量的实验和实现工作是由不同的小组独立完成的,多数早期的编译工作是将算术公式翻译成机器代码。用现在的标准来衡量,当时的编译程序能完成的工作十分初步,如只允许简单的单目运算,数据元素的命名方式有很多限制。然而它们奠定了对高级语言编译系统的研究和开发的基础。20世纪50年代中期出现了FORTRAN等一批高级语言,相应的一批编译系统开发成功。随着编译技术的发展和社会对编译程序需求的不断增长,20世纪50年代末有人开始研究编译程序的自动生成工具,提出并研制编译程序的编译程序。它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。目前很多自动生成工具已广泛使用,如词法分析程序的生成系统LEX,语法分析程序的生成系统YACC等。20世纪60年代起,不断有人使用自展技术来构造编译程序。自展的主要特征是用被编译的语言来书写该语言自身的编译程序。 1971年,PASCAL的编译程序用自展技术生成后,其影响就越来越大。 随着并行技术和并行语言的发展,处理并行语言的并行编译技术,将串行程序转换成并行程序的自动并行编译技术也正在深入研究之中。另外嵌入式应用迅速增长的需求,推动了交叉编译技术的发展.还有系统芯片设计方法和关键EDA技术的研究,也带动了专用语言VHDL等及其编译技术的不断深化。 编译实现方式的发展 -手工 机器语言 汇编 系统程序设计语言 -自动构造工具lex yacc gcc 推动编译技术发展的因素 语言型(计算模式) 计算机体系结构 语言型 -命令式(imperative language) -应用式(applicative) -基于规则的(rule-based) -面向对象的(object-oriented) -并行计算(parallel computing)

monkey测试指南

Monkey 测试指南 前言 Monkey。顾名思义就是像只活泼的猴子,乱按乱跳乱来。术语上来讲,就是产生各种各样的随机事件来对软件进行测试。其优点缺点都是不可控性。好处是脱离测试的习惯框架,多次的组合测试可以暴露出不少隐性的问题(就是把程序搞崩溃,哈哈);缺点则是无法得出具体的缺陷在哪,重现步骤如何等等的具体问题,往往我们得就是崩溃跟超时。 测试目的 检测该软件的稳定性、健壮性。它的原理是向系统发送伪随机的用户事件流(如按键输入、触摸输入、手势输入等),实现对正在开发的应用程序进行压力测试。 测试格式 基本语法如下: $ adb shell monkey [options] 如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送1000个伪随机事件: $ adb shell monkey -p https://www.sodocs.net/doc/bb16967631.html, -v number $ monkey -p(package的意思)指定文件名-v(测试的次数和频率)number(次数)测试流程 通过简单的测试示例,初步了解并掌握Monkey测试的步骤。注意,这里主要是使用adb命令进行安装和相关操作。测试的具体参考步骤如下: (1)首先,先准备了一个测试用的应用程序(apk文件)。为了测试,这里选择了云菜单 下载好后,得到下图所示的apk文件。 (2)将apk文件复制到android sdk对应platform-tools的目录下。例如,笔者的sdk路径为

D:\adt-bundle-windows-x86-20131030\sdk\platform-tools。如图所示 (3)进行apk文件的安装(安装的前提是,已经启动并可以检测模拟器):有安装91助手或者豌豆的用户可以直接双击apk文件进行安装;也可以使用android下的adb命令进行安装(如下图所示,Success表示安装成功)。adb命令下安装apk文件的命令为:adb install 文件名.apk。 (4)安装好后,会在模拟器上看到应用程序的启动图标 (5)安装好apk文件后,需要知道应用程序主Activity(第一个启动的Activity)所在的包名。这时,我们可以使用adb shell命令查找到程序主Activity所在的包名,如下图所示。(知道了apk的包名,我们也可以利用adb命令进行应用程序的卸载;卸载apk文件的命令为:

TurboC程序设计的基本步骤及如何编译、调试和运行源程序

Turbo C程序设计的基本步骤及如何编译、调试和运行源程序 本节主要介绍Turbo C程序设计的基本步骤及如何编译、调试和运行源程序。并给出Turbo C的常用编辑命令。最后介绍Turbo C编译、连接和运行时的常见错误。 一、Turbo C程序设计基本步骤 程序设计方法包括三个基本步骤: 第一步:分析问题。 第二步:画出程序的基本轮廓。 第三步:实现该程序。 3a.编写程序 3b.测试和调试程序 3c.提供数据打印结果 下面,我们来说明每一步的具体细节。 第一步:分析问题 在这一步,你必须: a. 作为解决问题的一种方法,确定要产生的数据(输出)。作为这一子步的一部分你应定义表示输出的变量。 b. 确定需产生输出的数据(称为输入),作为这一子步的一部分,你应定义表示输入的变量。 c. 研制一种算法,从有限步的输入中获取输出。这种算法定义为结构化的顺序操作,以便在有限步解决问题。就数字问题而言,这种算法包括获取输出的计 Word文档资料

算,但对非数字问题来说,这种算法包括许多文本和图象处理操作。 第二步:画出程序的基本轮廓 在这一步,你要用一些句子(伪代码)来画出程序的基本轮廓。每个句子对应一个简单的程序操作。对一个简单的程序来说,通过列出程序顺序执行的动作,便可直接产生伪代码。然而,对复杂一些的程序来说,则需要将大致过程有条理地进行组织。对此,应使用自上而下的设计方法。 当使用自上而下的设计方法时,你要把程序分割成几段来完成。列出每段要实现的任务,程序的轮廓也就有了,这称之为主模块。当一项任务列在主模块时,仅用其名加以标识,并未指出该任务将如何完成。这方面的容留给程序设计的下一阶段来讨论。将程序分为几项任务只是对程序的初步设计。整个程序设计归结为下图所示的流程图1. 0 1 1主模块 1 I 1 1 I 输入数据I 1主模块I I计算购房所需的金额I 1 I I计算装修所需的金额I 1任务1I I计算总金额I 1任务2I I输出计算结果I 1任务3I I I 1任务4I 1 ---------------- 1 -------------------- 1 I I I——1II——1II——1II1II——1I 1 ---------------------- 1 I输入数据II购房额?? II装修额..I I总额..I I输出 Word文档资料

gb百格测试标准

G B9286-98百格测试标准: 1 范围 1.1 本标准规定了在以直角网格图形切割涂层穿透至底材时来评定涂层从底材上脱离的抗性的一种试验方法。用这种经验性的试验程序测得的性能,除了取决于该涂料对上道涂层或底材的附着力外,还取决于其他各种因素。所以不能将这个试验程序看作是测定附着力的一种方法。注1:虽然本试验主要规定用于实验室,但也适用于现场试验。 1.2 所规定的方法可用作通过/不通过,或在适宜的场合,可用作一种六级分级试验(见 8.3)。当用于多层涂层体系时,可用来评定该涂层体系中各道涂层从每道其他涂层脱离的抗性。 1.3 本试验可在涂有罩面漆的物体上和/或特制试样上进行。 虽然本试验方法适用于硬质底材(钢)和软质底材(木材和塑料)上的涂料,但这些不同底材需要采用一种不同的试验步骤(见第7章)。 本试验方法不适用于涂膜厚度大于250μm的涂层,也不适用于有纹理的涂层。 注2:当应用于设计成凹凸不平的图案表面的涂层时,该方法所得的结果会有较大的偏差。 2 引用标准 下列标准所包含的条文,通过在本标准中引用而构成为本标准的条文。本标准出版时,所示版本均为有效。所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版本的可能性。 GB/T 1727—92 漆膜一般制备法 GB 3186—82(89)涂料产品的取样(neq ISO 1512:1978等) GB/T 9271—88 色漆和清漆标准试板(eqv ISO 1514:1984) GB 9278—88 涂料试样状态调节和试验的温湿度(eqv ISO 3270:1984) GB/T 13452.2—92 色漆和清漆漆膜厚度的测定(eqv ISO 2808:1974) 3 需要的补充资料 对于任何特定应用而言,本标准中规定的试验方法,需要用补充资料来加以完善。这些补充资料的项目在附录A中列出。 4 仪器 4.1 切割刀具 确保切割刀具有规定的形状和刀刃情况良好是特别重要的。 4.1.1 下面列出一些适宜的切割工具,如图1a)和1b)所示: a)单刃切割刀具的刀刃为20°~30 °,以及其他尺寸,如图1a)规定。 b)六个切割刀的多刃切割刀具,刀刃间隔为1mm或2mm,如图1b)规定。 在所有情况下,单刃切割刀具是优先选用的刀具,即适用于硬质或软底材上的各种涂层。多刃刀具不适用于厚涂层(>120μm)或坚硬涂层,或施涂在软底材上的涂层。 4.1.2 4.1.1 规定的刀具适用于手工操作,虽然这是较常用方法。刀具也可以安装在获得更均匀切割的马达驱动的仪器上,应用仪器的操作程序应经有关双方商定。 4.2 导向和刀刃间隔装置 为了把间隔切割得正确,当用单刃切割刀具时,需要一系列导向和刀刃间隔装置,一个适用的装置如图2所示。 4.3 软毛刷 4.4 透明的压敏胶粘带 采用的胶粘带,宽25mm,粘着力(10±1)N/25mm或商定。 4.5 目视放大镜 手把式的,放大倍数为2倍或3倍。 5 采样 按GB3186的规定采取受试产品的代表性样品。 6 试板 6.1 底材 除非另有商定,从GB/T 9271规定的那些底材中挑选一种底材。试板应该平整且没有变形。试板的尺寸应是能允许试验在三个不同位置进行,此三个位置的相互间距和与试板边缘间距均不小于5mm。

Monkey测试简介[附示例]

一、Monkey测试简介 Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。 二、Monkey程序介绍 1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar; 2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;这样就可以通过在CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了。 三、Monkey命令的简单帮助 要获取Monkey命令自带的简单帮助,在CMD中执行命令: adb shell monkey –help 四、Monkey命令参数介绍 1) 参数: -p 参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定 包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。 * 指定一个包:adb shell monkey -p com.htc.Weather 100 说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。 * 指定多个包:adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100 * 不指定包:adb shell monkey 100 说明:Monkey随机启动APP并发送100个随机事件。 * 要查看设备中所有的包,在CMD窗口中执行以下命令: >adb shell #cd data/data #ls 2) 参数: -v 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示: 日志级别Level 0 示例adb shell monkey -p com.htc.Weather –v 100 说明缺省值,仅提供启动提示、测试完成和最终结果等少量信息 日志级别Level 1 示例adb shell monkey -p com.htc.Weather –v -v 100 说明提供较为详细的日志,包括每个发送到Activity的事件信息

交叉编译与调试!!!

交叉编译与调试方法 一、交叉编译 1. 建立工作目录 2. 编写源代码 3. 编写makefile文件 4. 编译应用程序 #arm-linux-gcc -g hello.c -o hello 5. 启动NSF,挂载共享文件目录 将光盘中的gdbserver与gdb程序拷贝到共享目录 二、调试步骤 1、在Target Board开启gdbserver 进入共享目录 #gdbserver :2345 hello (我的host-ip是192.168.0.178) gdbserver开始监听2345端口(你也可以设其他的值),然后启动hello,你会看到“Process test created:pid=88” 2、回到Host端 添加环境变量 #export PATH=$PATH:/home/cby/arm-gdb/bin(arm-linux-gdb的路径) 调试 #arm-linux-gdb hello 最后一行显示:This GDB was configured as “--host=i686-pc-linux-gnu,--target =arm-linux”... 说明此gdb在X86的Host上运行,但是调试目标是ARM代码。 (gdb)target remote :2345 (我的target-board-ip is 192.168.0.105) 注意:你的端口号必须与gdbserver开启的端口号一致,这样才能进行通信。 建立链接后,就可以进行调试了。调试在Host端,跟gdb调试方法相同。

注意的是要用“c”来执行命令,不能用“r”。因为程序已经在Target Board上面由gdbserver 启动了。结果输出是在Target Board端,用超级终端查看。 4. 交叉调试 (gdb)list (gdb)break func (gdb)break 22 (gdb)info br (gdb)c (这里不能用run) (gdb) n (gdb) p result (gdb) finish (跳出func 函数) (gdb) next (gdb) quit 建立连接后进行gdb 远程调试和gdb 本地调试方法相同

Monkey操作手册

Monkey操作手册 一、Monkey a) Monkey是什么? Monkey就是SDK中附带的一个工具。Monkey测试是Android自动化测试的 一种手段,Monkey测试本身非常简单,当Monkey程序在模拟器或设备运行 的时候,如果用户出发了比如点击,触摸,手势或一些系统级别的事件的时候, 它就会产生随机脉冲,所以可以用Monkey用随机重复的方法去负荷测试你开 发的软件。 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。 它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等), 实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件 的稳定性、健壮性的快速有效的方法。 b) Monkey测试的目的? 该工具用于进行压力测试。然后开发人员结合monkey打印的日志和系统打印的日志,结合测试中出现的问题。 c) Monkey的特征 i. Monky测试使用的事件流数据流是随机的,不能进行自定义。 ii. 测试的对象仅为应用程序包,有一定的局限性。 iii. 可对Monkey的对象,事件数量,类型,频率等进行设置。 二、环境搭建 a)连接手机: 1 Android需要Root,2 (不必须)安装RE,控制data/data 挂载权限工具安装 i.JDK安装:详细:JDK安装配置 ii.SDK安装:建议拷贝SDK包,解压后配置SDK环境变量或安装详细:SDK 安装配置 至此环境安装就结束了 三、Monkey:连接真机 因为模拟器和真机的巨大差距,建议使用真机做Monke自动化测试,如果没有真机,自行安装虚拟模拟器。 a)在cmd窗口下面输入adb decixes 显示出真机连接型号。 如果未出现

编译与调试技巧

调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。 这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置 为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。 为了增加调试信息,可以按照下述步骤进行: ?打开Project settings对话框(可以通过快捷键ALT+F7打开,也可以通过IDE菜单Project/Settings打开) ?选择C/C++页,Category中选择general ,则出现一个Debug Info下拉列表框,可供选择的调试信息方式包括: ? ?选择Link页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL ?如果C/C++页中设置了Program Database以上的选项,则Link incrementally可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译),而不必每次都从头开始编译。

断点是调试器设置的一个代码位置。当程序运行到断点时,程序中断执行,回到调试器。断点是最常用的技巧。调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。 设置断点:可以通过下述方法设置一个断点。首先把光标移动到需要设置断点的代码行上,然后 ?按F9快捷键 ?弹出Breakpoints对话框,方法是按快捷键CTRL+B或ALT+F9,或者通过菜单Edit/Breakpoints打开。打开后点击Break at编辑框的右侧的箭头,选择合适的位置信息。一般情况下,直接选择line xxx就足够了,如果 想设置不是当前位置的断点,可以选择Advanced,然后填写函数、行号 和可执行文件信息。 去掉断点:把光标移动到给定断点所在的行,再次按F9就可以取消断点。同前面所述,打开Breakpoints对话框后,也可以按照界面提示去掉断点。 条件断点:可以为断点设置一个条件,这样的断点称为条件断点。对于新加的断点,可以单击Conditions按钮,为断点设置一个表达式。当这个表达式发生改变时,程序就被中断。底下设置包括“观察数组或者结构的元素个数”,似乎可以设置一个指针所指向的内存区的大小,但是我设置一个比较的值但是改动范围之外的内存区似乎也导致断点起效。最后一个设置可以让程序先执行多少次然后才到达断点。 数据断点:数据断点只能在Breakpoints对话框中设置。选择“Data”页,就显示了设置数据断点的对话框。在编辑框中输入一个表达式,当这个表达式的值发生变化时,数据断点就到达。一般情况下,这个表达式应该由运算符和全局变量构成,例如:在编辑框中输入g_bFlag这个全局变量的名字,那么当程序中有g_bFlag= !g_bFlag时,程序就将停在这个语句处。 消息断点:VC也支持对Windows消息进行截获。他有两种方式进行截获:窗口消息处理函数和特定消息中断。 在Breakpoints对话框中选择Messages页,就可以设置消息断点。如果在上面那个对话框中写入消息处理函数的名字,那么每次消息被这个函数处理,断点就到达(我觉得如果采用普通断点在这个函数中截获,效果应该一样)。如果在底下的下拉列表框选择一个消息,则每次这种消息到达,程序就中断。 值

GB9286-98百格测试标准

GB9286-98百格测试标准

1.1 本标准规定了在以直角网格图形切割涂层穿透至底材时来评定涂层从底材上脱离的抗性的一种试验方法。用这种经验性的试验程序测得的性能,除了取决于该涂料对上道涂层或底材的附着力外,还取决于其他各种因素。所以不能将这个试验程序看作是测定附着力的一种方法。 注1:虽然本试验主要规定用于实验室,但也适用于现场试验。 1.2 所规定的方法可用作通过/不通过,或在适宜的场合,可用作一种六级分级试验(见8.3)。当用于多层涂层体系时,可用来评定该涂层体系中各道涂层从每道其他涂层脱离的抗性。 1.3 本试验可在涂有罩面漆的物体上和/或特制试样上进行。 虽然本试验方法适用于硬质底材(钢)和软质底材(木材和塑料)上的涂料,但这些不同底材需要采用一种不同的试验步骤(见第7章)。本试验方法不适用于涂膜厚度大于250μm的涂层,也不适用于有纹理的涂层。 注2:当应用于设计成凹凸不平的图案表面的涂层时,该方法所得的结果会有较大的偏差。 2 引用标准 下列标准所包含的条文,通过在本标准中引用而构成为本标准的条文。本标准出版时,所示版本均为有效。所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版本的可能性。 GB/T 1727—92 漆膜一般制备法 GB 3186—82(89)涂料产品的取样(neq ISO 1512:1978等) GB/T 9271—88 色漆和清漆标准试板(eqv ISO 1514:1984) GB 9278—88 涂料试样状态调节和试验的温湿度(eqv ISO 3270:1984) GB/T 13452.2—92 色漆和清漆漆膜厚度的测定(eqv ISO 2808:1974) 3 需要的补充资料 对于任何特定应用而言,本标准中规定的试验方法,需要用补充资料来加以完善。这些补充资料的项目在附录A中列出。 4 仪器 4.1 切割刀具 确保切割刀具有规定的形状和刀刃情况良好是特别重要的。 4.1.1 下面列出一些适宜的切割工具,如图1a)和1b)所示: a)单刃切割刀具的刀刃为20°~30 °,以及其他尺寸,如图1a)规定。 b)六个切割刀的多刃切割刀具,刀刃间隔为1mm或2mm,如图1b)

相关主题