文档库 最新最全的文档下载
当前位置:文档库 › Linux环境下的C和C++基础调试技术

Linux环境下的C和C++基础调试技术

Linux环境下的C和C++基础调试技术
Linux环境下的C和C++基础调试技术

Linux环境下的C/C++基础调试技术(一)初步了解。【后续有二:程序控制】

1.调试技术的几个准则

惊喜准则:找到错误是一种惊喜,心理上不要畏惧而是要怀着感恩的心去面对。

从小处开始准则:刚开始测试的使用从小处着手,暂时不涉及边界数据,虽然这样可能会掩盖一些Bug,但是这样或许能查到最主要的Bug,例如你的程序包含了一个巨大的循环体,最容易发现的Bug在第一个循环或第二次循环执行的时候。

自顶向下准则:优先选择step over而不是step into,以节省时间。

Segmentation Fault准则:出现段错误时,第一个想到的不应该是printf而是Debugger,因为在调试器中你能看到你的哪一行代码导致了错误,更重要的是你可以通过backtrace等工具得到更多有用的信息。

折半查找准则:在寻找bug时可以充分利用编辑器等工具来进行折半查找,具体在后边有例子说明。

2.Linux下代码调试工具

主要使用的GDB,以及基于GDB的图形化工具,如DDD或eclipse,选择上看个人习惯了。

命令行式的GDB启动较快,可以在ssh终端下使用,操作简洁,并且在调试GUI程序时不会崩溃,但较之图形化则在单步调试或设置断点时非常不方便。

当然你可以使用Vim等编辑器的插件或者补丁(clewn or vimGDB)来弥补这一缺憾,并且在GDB6.1以上的版本你可以使用GDB-tui这个模式(或者在GDB的命令行模式下按CTRL-x-a)打开一个类似于图形界面的文本界面模式,在这个界面中你可以使用上下键查看源代码(CTRL-P和CTRL-N完成输入过的命令的查看).

或者你还可以使用cGDB这个工具(很庆幸这个项目在停止了三年后又有人开始维护了),这个工具是将GDB用curses包装了一下,提供了一些很好用的feature(Esc和i键在代码和命令框间切换;在代码框中支持vim型的操作;在命令框中支持tab键补全命令;在移动到想加入断点的行(行号为高亮白色)直接用空格键,设定好后行号会变红;)。另外,在调试C-S程序时推荐使用eclipse。

在本文中,重点介绍ddd的操作,因为这个工具即结合了GDB命令行和图形界面的操作。其余请参阅各个工具的手册。

3.GDB命令行最基本操作

设置断点:b LineNumber

运行程序:r args1args2...

彻底终止程序:kill

单步执行:n(TIPs1:可以按回车重复上一次操作,在单步调试时这个feature很有用)。

单步进入:s

继续执行:c

设置临时断点:tb LineNumber可以理解为一次性断点,与断点不同,临时断点只在第一次执行时起作用。

查看变量:p

设置观察点:

w Expression,当Expression是一个变量名时,这个变量变化时会停止执行;你也可以使用条件来限定,比如w(z>28),当z大于28时,程序停止。注意观察点一般使用在更大范围上的变量,而不是本地变量,因为在局部变量上设置的观察点在局部结束时(比如该变量所在的函数执行结束时)就被取消了。

当然这并不包含main的情况,因为main函数执行结束后程序就结束了。

查看栈帧:

栈帧指的是在一个函数调用时,该函数调用的运行信息(包含本地变量、参数以及函数被调用的位置)存储的地方。每当一个函数被调用时,一个新的帧就被系统压入一个由系统维护的帧,在这个栈的顶端是现在正在运行的函数信息,当该函数调用结束时被弹出并析构。在GDB中,frame0为当前帧,frame1为当前帧的父帧,frame2为父帧的父帧,等等,用down命令则是反向的。这是一个很有用的信息,因为在早期的一些帧中的信息可能会给你一些提示。

backtrace查看整个帧栈

注意:在帧中来回并不影响程序的执行。

实例:插入排序算法调试

用伪代码描述这个过程如下:

拟调试代码如下:

//

//insertion sort,

//

//usage:insert_sort num1num2num3...,where the numi are the numbers to

//be sorted

int x[10],//input array

y[10],//workspace array

num_inputs,//length of input array

num_y=0;//current number of elements in y

void get_args(int ac,char**av)

{int i;

num_inputs=ac-1;

for(i=0;i

x[i]=atoi(av[i+1]);

}

void scoot_over(int jj)

{int k;

for(k=num_y-1;k>jj;k++)

y[k]=y[k-1];

}

void insert(int new_y)

{int j;

if(num_y=0){//y empty so far,easy case y[0]=new_y;

return;

}

//need to insert just before the first y

//element that new_y is less than

for(j=0;j

if(new_y

//shift y[j],y[j+1],...rightward

//before inserting new_y

scoot_over(j);

y[j]=new_y;

return;

}

}

}

void process_data()

{

for(num_y=0;num_y

//among y[0],...,y[num_y-1]

insert(x[num_y]);

}

void print_results()

{int i;

for(i=0;i

printf("%d\n",y[i]);

}

int main(int argc,char**argv)

{get_args(argc,argv);

process_data();

print_results();

}

我们编译一下:

gcc-g-Wall-o insert_sort ins.c

注意我们要使用-g选项告诉编译器在可执行文件中保存符号表——我们程序中变量和代码对应的内存地址。

现在我们开始运行一下,我们使用“从小处开始准则”,首先使用两个数进行测试:

./insert_sort125

我们发现该程序没有退出,貌似进入了一个死循环。我们开始使用ddd调试这个程序:

ddd insert_sort

运行程序,传入两个参数:

r125

此时程序一直运行不退出,按Ctrl+C暂停程序的执行

(GDB)r125

^C

Program received signal SIGINT,Interrupt.

0x080484ff in insert(new_y=3)at insert_sort.c:45

/home/gnuhpc/MyCode/Debug/Chapter_01/insert_sort/pg_019/insert_sort.c:45:939:beg:0x80484f f

(GDB)

我们可以看到程序停止在第49行。我们看一下num_y现在的值:

(GDB)p num_y

$1=1

这里的$1指的是你要GDB告诉你的第一个变量。找到了这个地方后,我们看看在num_y=1时都发生了什么,我们在insert函数(第27行)设置断点(你也可以直接使用break insert 在这个函数的入口设置断点),并且设置GDB在断点1处(你可以通过info break命令查看断点)只当num_y==1时才停止:

(GDB)b27

Breakpoint1at0x80484a1:file insert_sort.c,line27.

(GDB)condition1num_y==1

(GDB)

上述命令也可以使用break if合一:

(GDB)break27if num_y==1

然后再运行程序,随后用n单步调试发现我们跳到了该函数的出口处:

此时我们看看num_y的值,以便查看到底这个for循环执行的情况。

(GDB)p num_y

$2=0

此时的情况是我们进入这个函数时num_y为1,但是现在num_y为0,在中间这个变量被改变了。现在你知道Bug就在30-36行间。同时,通过单步调试你发现31-33行被跳过了,34、35行为注释,那么Bug就在第30或第36行间了。

我们现在仔细看这两行就能得出结论了:30行有个典型的if判断条件写成赋值的错误,致命的是这个变量是全局变量,直接导致49行的for循环变量一直被重置。我们修改后重新编译(可以另开一个编辑器,不用退出ddd),然后再运行

(GDB)r125

5

虽然没有了死循环,但是结果还是不对的。

请注意,初始的时候数组y是空的,在#49进行第一次循环时,y[0]应该为12,在第二个循环中,程序应该挪动12为5腾出位置插入,但是此时这个结果看上去是5取代了12。

此时单步调试进入for循环,#37看y[0]的值,的确是12。我们执行到scoot_over函数时,根据自顶向下准则我们单步跳过,继续执行到#41,看看结果对错再决定是不是要单步进入scoot_over函数:

我们发现12根本就没有被移动,说明scoot_over函数有问题,我们去掉insert函数入口的断点,在scoot_over入口处设置断点,当num_y=1的时候终止:b scoot_over if num_y==1。进一步单步调试后发现这个#23的for循环就没有执行。

(GDB)p jj

$12=0

(GDB)p k

$13=0

我们看到是因为没有满足for循环条件而不能进入循环。在这里12应该从y[0]移动到y[1],那么我们确定是循环的初始化错误,应该为k=num_y,将这个地方修改后编译运行,程序出现段错误。我们清空所有的断点,然后在

(GDB)r

Program received signal SIGSEGV,Segmentation fault.

0x08048483in scoot_over(jj=0)at insert_sort.c:24

(GDB)

这里指出在24行出现seg fault,那么要么k超过了数组界限,要么k-1为负的。打印一下k 的值,我们就发现:

(GDB)p k

$14=992

(GDB)

远远超过k应该有的值。查看num_y为1,说明在处理第二个要排序的数时出错,再打印jj值,发现为0,就发现我们的for循环k++应该改为k—。

编译运行,发现ok。但是运行多个数据就又出错了:

(GDB)r125192261

1

5

6

12

Program exited with code06.

(GDB)

我们看到结果中从19开始的排序都有问题,我们在for(j=0;j

(GDB)break36if new_y==19

Breakpoint10at0x80484b1:file insert_sort.c,line36.

(GDB)

单步调试就发现我们没有对当要插入的元素大于所有元素时进行处理。在#44后加入y[num_y]=new_y;重新编译,运行程序正确,至此,我们通过一个简单的例子演示了一下如何使用GDB进行调试。

参考文献:

《Art of Debugging》

《Linux?Debugging and Performance Tuning:Tips and Techniques》

Linux环境下的C/C+基础调试技术(二)——程序控制

1.让程序停下来的三种模式

断点(breakpoint):让程序在特定的地点停止执行。

观察点(watchpoint):让程序在特定的内存地址(或者是一个涉及多个地址的表达式)的值发生变化时停止执行。注意,你不能给一个尚没有在栈帧中的表达式或变量设定观察点,换句话说,常常在程序停下来后才去设置观察点。在设定观察点后,栈帧中不存在所监控的变量时,观察点自动删除。

捕捉点(catchpoint):让程序在发生特定事件时停止执行。

注:

GDB文档中统称这三种程序暂停手段为breakpoint,例如在GDB的delete命令的帮助手册中就是这么描述的,它实际上指代的是这三种暂停手段,本文中以breakpoints统称三种模式,以中文进行分别称呼。

GDB执行程序到断点(成为断点被hit)时,它并没有执行断点指向的那一行,而是将要指向断点指向的那一行。

GDB是以机器指令为单位进行执行的,并非是以程序代码行来进行的,这个可能会带来一些困惑,下文有例子详述。

2.GDB breakpoints的查看

命令:i b=info breakpoints。返回列表每一列的含义如下:

Identifier:breakpoints的唯一标识。

Type:该breakpoints属于上述三种模式中的哪一个(breakpoint,watchpoint,catchpoint)Disposition:该breakpoints下次被hit以后的状态(keep,del,dis分别对应保留、删除、不使能)

Enable Status:该breakpoints是否使能。

Address:该breakpoints物理地址。

Location:若属于断点则指的是断点在哪个文件的第几行,若是观察点则指的是被观察的变量

3.GDB程序控制的设置

断点设置:

设置普通断点:break function/line_number/filename:line_number/filename:function.该断点在

被删除或不使能前一直有效。

设置临时断点:tbreak function/line_number/filename:line_number/filename:function.该断点在被hit一次后自动删除。

设置一次性断点:enable once breakpoint-list,这个与临时断点的不同是该断点会在被hit一次后不使能,而不是删除。

设置正则表达式断点:rbreak regexp注意该正则表达式是grep型的正则,不是perl或shell 的正则语法。

设置条件断点:break break-args if(condition),例如break main if argc>1。

这个与观察点不同的是,观察点只要所观察的表达式或变量的值有变化程序就停下,而条件断点必须满足所指条件。条件断点在调试循环的时候非常有用,例如break if(i==70000)。在已经添加的断点上加上条件使用cond id condition,例如:cond3i==3;想去掉条件转化为普通断点则直接使用cond id,例如,cond3。

注意,这里的条件外的括号有没有都行,条件中可以使用<,<=,==,!=,>,>=,&&,||,&,|,^,>>, <<,+,-,x,/,%等运算符,也可以使用方法,例如:break test.c:myfunc if! check_variable_sanity(i),这里的方法返回值一定要是int,否则该条件就会被误读。

删除断点:

delete breakpoint_list列表中为断点的ID,以空格隔开

delete删除全部断点

clear删除下一个GDB将要执行的指令处的断点

clear function/filename:function/line_number/filename:line_number删除特定地点的断点

使能断点:enable breakpoint-list

不使能断点:disable breakpoint-list

跳过断点:ignore id numbers表示跳过id表示的断点numbers次。

注意:

若设置断点是以函数名进行的话,C++中函数的重载会带来麻烦,该同名函数会都被设置上断点。请使用如下格式在C++中进行函数断点的设置:TestClass::testFunc(int)

设置的断点可能并非是你想放置的那一行。例如:

1:int main(void)

2:{

3:int i;

4:i=3;

5:return0;

6:}

我们不使用编译器优化进行编译,然后加载到GDB中,如下:

$gcc-g3-Wall-Wextra-o test1test1.c

$gdb test1

(gdb)break main

Breakpoint1at0x6:file test1.c,line4.

我们发现显然#4并非是main函数的入口,这是因为这一行是该函数第一行虽然产生了机器

码,但是GDB并不认为这对调试有帮助,于是它就将断点设置在第一行对调试有帮助的代码上。

我们使用编译器优化再进行编译,情况会更加令人困惑,如下:

$gcc-O9-g3-Wall-Wextra-o test1test1.c

$gdb test1

(gdb)break main

Breakpoint1at0x3:file test1.c,line6.

GCC发现i变量一直就没有使用,所以通过优化直接忽略了,于是程序第一行产生机器码的代码恰好是main函数的最后一行。

因此,建议在不影响的情况下,程序调试时将编译器优化选项关闭。

同一行有多个断点时,程序只会停下一次,实际上GDB使用的是其中ID最小的那个。

在多文件调试中,常常希望GDB在并非当前文件的部分设置断点,而GDB默认关注的是含有main函数的文件,此时你可以使用list functionname、或者单步调试等方式进入另一个文件的源代码中进行设置,此时你设置的行号就是针对这个文件的源代码了。

当你利用代码行进行断点设置时,重新编译程序并在GDB中reload后,断点可能因为你代码行数的变化而发生相对位置变化(GDB指向的行数),这样的情况下使用DDD直接对原断点进行拖动是最方便的方法,它不会影响该断点的状态和条件,只会改变它所指的位置,从而省去了del一个断点后再在新位置添加设置新断点的麻烦。

在DDD中还可以Redo和Undo对断点的操作。

观察点设置:

设置写观察点:watch i;watch(i|j>12)&&i>24&&strlen(name)>6,这是两种观察点(包含读写等)设置的方式(变量或表达式)。写观察点在该变量被写入后程序立刻中止。注意,很多平台都有硬件支持的观察点,默认GDB是优先使用的就是这些,若暂时不可用,GDB 会使用VM技术实现观察点,这样的好处是硬件的速度较快。

设置读观察点:rwatch。

设置读写观察点:awatch

举例:下列简单程序,可以首先在main函数入口设置断点,然后在该断点被hit时设置观察点。1:#include

2:

3:int main(int argc,char**argv)

4:{

5:int x=30;

6:int y=10;

7:

8:x=y;

9:

10:return0;

11:}

这是个非常简单的程序,在main函数入口处断点被hit后我们可以设置rwatch x进行变量监视。

程序恢复:

单步执行:

单步跳过:n=next跳过调用方法的细节,将该行视为一行代码进行执行。next3表示连续执行三次next。

单步进入:s=step进入调用方法的细节。

执行到下一断点:c=continue,程序继续执行直到hit下一个断点。

执行到下一栈帧:fin=finish,程序继续执行直到当前栈帧完成。这个常常被用来完成所谓step out的工作,在你不小心按到了step时(你本意其实是想单步跳过),你就可以使用finish 跳出该方法。当然,如果你进入了一个迭代函数中的多层以内,可能一个临时断点+continue 或者until会更加有用,后者见下文。

执行到具有更高内存地址的机器指令:u=until(后边可以跟上funtionname/linenumber),应用的场景见下边的代码,在我们进入了这个循环后我们想跳出来执行循环后的代码,此时我们当然可以在循环后的第一行代码设置临时断点,然后continue到那,但这个操作会比较麻烦,最好的方式是使用until,该命令使程序继续运行知道遇到一个具有更高内存地址的机器指令时停止,而在循环被编译成机器指令时,会将循环条件放在循环体的最底部,所以利用until正好跳出循环进入下一机器指令(P.S.你可以使用GCC的-s查看生成的机器指令以便更好的理解这个命令的运行方式):1:...previous code...

2:int i=9999;

3:while(i--){

4:printf("i is%d\n",i);

5:...lots of code...

6:}

7:...future code...

程序反向调试:

这是GDB7以后新加入的功能,如果你在调试的时候发现自己已经错过了想调试的地方,这个操作可以使你不必重新开始调试而直接返回已经执行过的代码进行调试。我们使用下边一个非常简单的程序对这个新版本的功能加以说明:1:#include

2:void foo(){

3:printf("inside foo()");

4:int x=6;

5:x+=2;

6:}

7:

8:int main(){

9:int x=0;

10:x=x+2;

11:foo();

12:printf("x=%d\n",x);

13:x=4;

14:return(0);

15:}

16:

我们编译一下然后在main函数处设置断点,然后使用record命令开始记录,这是使用反向调试必须的开始步骤,最后进行两步单步调试,打印x的值:

(gdb)b main

Breakpoint1at0x804840d:file test.c,line9.

(gdb)record

Process record:the program is not being run.

(gdb)r

Starting program:/home/gnuhpc/test

Breakpoint1,main()at test.c:9

9int x=0;

(gdb)record

(gdb)n

10x=x+2;

(gdb)

11foo();

(gdb)print x

$1=2

此时x=2,现在我们反向一步单步调试,打印x的值:

(gdb)reverse-next

10x=x+2;

(gdb)p x

$2=0

这正是我们想要的。对于断点,反向调试也支持类似正向调试时的continue语句,我们在15行设置断点,然后continue到这个断点:

(gdb)b15

Breakpoint2at0x8048441:file test.c,line15.

(gdb)c

Continuing.

inside foo()x=2

Breakpoint2,main()at test.c:15

15}

此时我们在foo函数处加上断点,然后反向continue:

(gdb)b foo

Breakpoint3at0x80483ea:file test.c,line3.

(gdb)reverse-continue

Continuing.

Breakpoint3,foo()at test.c:3

3printf("inside foo()");

程序回到foo入口处。网上有文献反向调试指出必须使用软件观察点,事实并非如此:(gdb)watch x

Hardware watchpoint4:x

(gdb)reverse-continue

Continuing.

Hardware watchpoint4:x

Old value=6

New value=134513384

foo()at test.c:4

4int x=6;

(gdb)n

Hardware watchpoint4:x

Old value=134513384

New value=6

foo()at test.c:5

5x+=2;

由于篇幅有限我们在此提供手册上的反向调试命令解释资料,并且附上一篇教程,读者可以自行进行使用学习。

停止后的命令列表:

在程序中止执行时,用户可能会进行一系列操作,GDB提供了这个操作的自动化,类似于批处理脚本一样将需要操作的命令进行批量执行。语法为:

commands breakpoint-id

...

commands

...

end

例如我们调试斐波那契数列的程序:

1:#include

2:int fibonacci(int n);

3:int main(void)

4:{

5:printf("Fibonacci(3)is%d.\n",fibonacci(3));

6:return0;

7:}

8:int fibonacci(int n)

9:{

10:if(n<=0||n==1)

11:return1;

12:else

13:return fibonacci(n-1)+fibonacci(n-2);

14:}

由于这是一个递归函数,我们为了追寻递归,要查看程序以什么顺序调用fibonacci()传入的值,当然你可以使用printf进行查看,只是这个方法看起来很土。我们如下进行调试:(gdb) break fibonacci然后设置命令列表:(gdb)command1

Type commands for when breakpoint1is hit,one per line.

End with a line saying just"end".

>silent

>printf"fibonacci was passed%d.\n",n

>continue

>end

(gdb)run

Starting program:fibonacci

fibonacci was passed3.

fibonacci was passed2.

fibonacci was passed1.

fibonacci was passed0.

fibonacci was passed1.

Fibonacci(3)is3.

Program exited normally.

(gdb)

这里就能很清晰地看到函数被调用的情况了。当然,你可以将上述命令列表写成一个宏(最多支持10个传入参数,我们使用了两个):

(gdb)define print_and_go

Redefine command"print_and_go"?(y or n)y

Type commands for definition of"print_and_go".

End with a line saying just"end".

>printf$arg0,$arg1

>continue

>end

使用的时候非常方便:

(gdb)commands1

Type commands for when breakpoint1is hit,one per line.

End with a line saying just"end".

>silent

>print_and_go"fibonacci()was passed%d\n"n

>end

你甚至可以将这个宏存放在.gdbinit文件(GDB启动时自加载文件)中,以后方便使用,关于gdbinit的使用下文自有介绍。

附注:后文将介绍watchpoint的用法和实例,在此略过。

参考文献:

《Art of Debugging》

《Linux?Debugging and Performance Tuning:Tips and Techniques》

开发环境与测试环境搭建方案

开发环境与测试环境搭建方案 1. 总体原则 1.开发与测试环境单独搭建,开发与测试环境的分离便于利于重现开发环境无法重现的BUG 以及便于开发人员并行地修复BUG ,如果选择开发环境来进行测试,开发人员进行某项误操作后发生系统崩溃或者系统不能正常运行的意外,此时测试工作也不得不停止。 2.测试环境与测试数据库分离,测试环境与测试数据库分离保证测试数据库的稳定性、数据准确性以及今后性能测试指标值的准确性。 3.开发环境与开发数据库共用一台,由于开发环境对及其性能要求不高,因此应用与数据库采用共用。 4.测试环境WEB 应用部署与生产环境相同,测试数据库的配置(用户、表空间、表)也需与生产环境一致。 2. 环境管理 2.1. 系统架构 开发环境构架: 测试环境系统构架: 2.2. 硬件配置 从上述的系统架构图分析需要3台服务器组建开发与测试环境,机型选择普 通的PC Server 机器即可。 2.3. 安装软件 建议方案中给出是环境搭建的主要软件,其他的工具未在罗列中,根据具体 需要自行安装。 服务器 内存 CPU 硬盘 备注 开发服务器 2G 到4G 之间 4C ,主频2G 以上 300G 左右 测试服务器 8G-16G 之间 4C ,主频2G 以上 300G 左右 测试数据服务器 8G-16G 之间 4C ,主频2G 以上 500G 左右

3. 权限管理 3.1. 开发环境 开发人员均可访问开发服务器应用代码与开发数据库,可以修改代码与数据 以及发布部署开发版本以便自测。 3.2. 测试环境 测试环境由版本管理员管理,负责整个测试环境的管理,包括版本部署、服 务启停、数据变更等,测试环境对开发人员只开发查询权限,仅可查询应用日志,服务运行、测试数据。 4. 版本管理 开发与测试环境安装 SVN 版本管理软件,由版本管理员负责对开发与测 试环境的版本管理工作。 5. 备份管理 1.备份主要包括开发与测试环境的代码与配置,备份方式暂为全量备份。 2.每日凌晨3点系统自动对每个项目的代码已经配置文件自动备份,备份文件名:项目名称_code_yyyymmdd.tar ,备份完成后传至备份服务器(服务器待定)。 3.每当长假(元旦、清明、五一、端午、十一、中秋、春节)前期,需手工对开发与测试环境进行全量备份。 4. 服务器 操作系统 中间件 数据库 测试工具 版本管理 工具 开发服务器 RedHat Linux 5.4 64位 Weblogic 9 Oracle 10 无 SVN 测试服务器 RedHat Linux 5.4 64位 Weblogic 9 无 JIRA SVN 测试数据服务器 RedHat Linux 5.4 64位 无 Oracle 10

测试环境搭建方案

各种缺陷管理工具比较 mantis 1.概述 缺陷管理平台Mantis,也做MantisBT,全称Mantis Bug Tracker。Mantis是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的形式提供项目管理及缺陷跟踪服务。在功能上、实用性上足以满足中小型项目的管理及跟踪。更重要的是其开源,不需要负担任何费用。 Mantis是一个缺陷跟踪系统具有多特性包括:易于安装,易于操作,基于Web,支持任何可运行PHP的平台(Windows,Linux,Mac,Solaris,AS400/i5等)。已经被翻译成68种语言,支持多个项目,为每一个项目设置不同的用户访问级别,跟踪缺陷变更历史,定制我的视图页面,提供全文搜索功能,内置报表生成功能(包括图形报表),通过Email报告缺陷,用户可以监视特殊的Bug,附件可以保存在web服务器上或数据库中(还可以备份到FTP服务器上),自定义缺陷处理工作流,支持输出格包括csv、MicrosoftExcel、MicrosoftWord,集成源代码控制(SVN与CVS),集成wiki知识库与聊天工具(可选/可不选),支持多种数据库(MySQL、MSSQL、PostgreSQL、Oracle、DB2),提供WebService(SOAP)接口,提供Wap访问。 2 .优点 1,流程定制方便且符合标准,满足一般的缺陷跟踪; 2,安装简单; 3 .缺点 1.只能简单的对缺陷进行管理,不能管理整个测试流程:测试需求-测试计 划-测试案例-执行测试案例-提交缺陷-测试总结报告;

2.界面比较简单,有些功能不能实现(如上传附件) QC 1.概述 Quality Center 是一个基于Java 2 Enterprise Edition (J2EE) 技术的企业级应用程序。Quality Center 可以帮助您组织和管理应用程序测试流程的所有阶段,包括制定测试需求,计划测试,执行测试和跟踪缺陷。 2.优点 1,QC能够帮助你组织和管理软件测试过程的每个阶段,包括测试需求管理、测试计划、测试案例、测试执行和缺陷跟踪。 2,QC执行对测试用例执行统计情况,对bug的统计,分析等功能比较强大; 3.缺点 1,安装比较复杂 2,收费软件。 JIRA 1.概述 JIRA是集项目计划、任务分配、需求管理、错误跟踪于一体的商业软件。JIRA创建的问题类型包括New Feature(新功能)、Bug、Task(任务)和Improvement(增加或修改)四种,还可以自己定义,所以它也一是过程管理系统。JIRA融合了项目管理、任务管理和缺陷管理,许多著名的开源项目都采用了JIRA。

测试环境搭建及测试基础

测试环境搭建及测试基础 一、建立测试环境 用来进行单板测试的房间需要具备以下条件: 1、尽量独立一个房间,因为测试中很容易受到其他设备的干扰; 2、如果需要准确测试的电压低于1mV,必须对房间进行金属屏蔽; 3、房间必须有独立接地系统接往本层楼层保护地入口; 4、房间必须有接地汇流排,截面积不得小于6平方毫米; 5、房间最好有独立的防静电地; 6、房间交流电源必须使用两路总空气开关,一路供测试设备使用,一路供EUT 使用,防止EUT故障引起断电,导致测试设备需要多次重启; 7、测试房间必须至少具备1台隔离变压器; 8、测试设备带宽高于500MHz的位置,房间必须设有EPA区; 9、有EPA区的房间必须设置人体电阻测试仪和防静电鞋帽; 10、测试人员在测试实验室必须遵守ESD防护程序; 11、待测设备要有“正在测试”的警示标牌; 12、放置待测设备和测试仪器的桌面必须铺设防静电台布,和手腕带接地插座; 13、测试实验室必须对不同的测试范围划定功能区,固定测试设备位置,制定设备责任人,放置实验设备和配件移动导致结果实验错误; 14、不同测试平台之间不能共用接地汇流排。 设备摆放参考以下: 配电方式建议如下,采用专用地线、零、火线,降低同楼层干扰。 二、示波器选择与使用要求: 1、测里前保证测试仪器(仪表)和被测单板或系统共地。如果不共地,地线浮空,可能会得到错误的测试结果; 2、测里前需要校准仪器; 3、为确保测试数据的精度,应尽举采用高输入阻抗、小电容值、高带宽的有源探头和高带宽的示波器;

4、示波器的带宽:描述了示波器固有的上升时间(即时延)。探头和示波器的带宽要超过信号带宽的3-5倍以上; 5、示波器的采样速率:表示为样点数每秒〔S/s ),指数字示波器对信号采样的频率。为了准确再现信号,根据香农(Shannon )定律,示波器的采样速率至少需为信号最高频率成分的2信; 6、程应尽星小,波形尽量展开,以方使观察波形变化的细节,并准确测量其幅值; 7、测量信号边沿时,应选用合适的边沿触发; 8、高档示波器都具有毛刺捕捉模式,可以用于捕捉毛刺; 三、探头选择与使用要求: 1、不允许在探头还连接着被测试电路时插拔探头; 2、有源探头和差分探头、电流探头等是很昂贵的设备,注意保护。插拔探头时必须先关示波器。无源探头一般没有硬性规定,但是出于可靠考虑,建议所有探头都不能热插拔,热插拔任何探头时都必须先关闭示波器; 3、探头地线只能接电路板上的地线,不可以搭接在电路板的正、负电源端。否则,可能会造成电路板器件损坏,甚至会烧坏探头的小夹子和探头木身; 4、探头电容越小,它对对电路的负载就越小,测试结果就更精确。选用时请根据情况仔细考虑; 5、探头是有测量幅度的,不要用于测大信号,以免造成探头损坏。例如:信号幅度超过+/-40V时,用有源探头P6245和P6243测量会造成探头的损坏; 6、差分探头能够测量差分电压范围是有限的。例如,差分探头P6247,其上的开关打在÷10档位时,能测的差分电压范围是+/ V,打在÷1档位时只有+/-850mV 差分信号峰峰值超过850rnV时(比如测公司常用的平衡线传输信号+/-5V),要注意选用÷10档,否则会因输入过大而使显示的波形发生错误; 7、使用电流探头需先校准。每测试一个信号都需要校准一次; 8、使用时,探针尽量垂直于测试表面。但不可用力按压,以免探针受损; 四、测试点的选择: 1、一般只测试单板接收到的信号,不测试发送的信号; 2、信号质量测试点要求在信号在末端测量〔根据当前信号流向决定测试点)。尽里在芯片的输 入管脚上测量,或者尽量靠近输入管脚;

Linux下搭建C#开发环境

文章来源https://www.wendangku.net/doc/7b15117835.html,/articles/116249.htm 如果平时主要开发控制台类、组件、后端服务等程序,可以尝试在Linux类操作系统下搭建C#.Net 开发环境,好处是在Linux环境里你不用担心朋友或同事拿你的电脑来玩魔兽世界或者一不小心被装了一大堆流氓软件;-)先看看本篇文章最终效果:在Ubuntu里跑的开发环境MonoDevelop: 1、Linux发行版的选择 在Linuxux操作系统里只要安装Mono环境就可以开发C#程序,Linux的众多发行版 RedHat/CentOS/Fedora、OpenSuse、Debian、Ubuntu都可以安装 Mono。 鉴于目前Ubuntu 容易安装、界面漂亮而且比较多人用作桌面环境,所以这里推荐使 用Ubuntu 10.04 。官方网站是:https://www.wendangku.net/doc/7b15117835.html,/ 在官方网站下载回来的是一个光盘映像文件(ISO格式),这里需要注意的是Ubuntu 共有4个不同版本的ISO文件:Desktop版、Alternative版、Netbook版、 Server版。一般下载Desktop 就可以了。如果你想通过网络启动安装程序或者使用硬盘安装则需要下载Alternative版。 如果你的电脑硬件配置比较低(内存少于等于 512MB),还可以下载一个轻量级的衍生版:Xubuntu (https://www.wendangku.net/doc/7b15117835.html,/),如果你的电脑只有256MB内存,那还可以下载另一个衍生版Lubuntu (https://www.wendangku.net/doc/7b15117835.html,/),这个更加轻量级,平时系统启动后只占用 70~100MB内存。 2、安装Ubuntu 安装Ubuntu 的方法非常简单,跟装 WinXP差不多,只需点5,6次“下一步”过10来分钟就可以

测试环境搭建与部署

测试环境搭建与部署 1.目的 1.1.为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称。稳定 和可控的测试环境,可以使测试人员花费较少的时间就完成测试用例的执行,无需为测试用例、测试过程的维护花费额外的时间,并且可以保证每一个被提交的缺陷都可以在任何时候被准确的重现。 2.适用范围 2.1.硬件环境搭建:指测试必须的服务器、客户端、网络连接设备以及打印机/扫描仪等辅助 设备所构成的环境;若要求的硬件配置种类较多,可以定义一些基本硬件配置; 2.2.软件环境搭建:指测试软件运行时的操作系统、数据库及其他应用软件构成的环境;2. 3.利用辅助测试环境进行的测试: 兼容性测试:在满足软件运行要求的范围内,可选择一些典型的操作系统和常用应用软件对其进行主要功能的验证。 2.4.网络环境:指被测软件运行时的网络系统、网络结构以及其他网络设备构成的环境、网 络设备、网络结构、网络系统等。 2.5.对测试环境的要求: 尽可能真实的环境 符合软件运行的最低要求 选用比较普及的操作系统和软件平台 营造纯净、独立的测试环境 无毒的环境 3.术语和定义 无 4.职责 4.1.技术部测试组成员 4.1.1.负载规划、建立和维护软件测试管理流程并持续优化 4.1.2.组织环境搭建工作的实施 4.1.3.在搭建环境中进行的工作分批写入测试用例和测试报告中 4.1.4.对应环境中发现的问题及时反馈并追踪

5.部署和管理测试环境 5.1.确定测试环境的组成 5.1.1.所需要的计算机的数量,以及对每台计算机的硬件配置要求,包括CPU的速度、内存 和硬盘的容量、网卡所支持的速度、打印机的型号等; 5.1.2.部署被测应用的服务器所必需的操作系统、数据库管理系统、中间件、WEB服务器以 及其他必需组件的名称、版本,以及所要用到的相关补丁的版本; 5.1.3.用来保存各种测试工作中生成的文档和数据的服务器所必需的操作系统、数据库管理 系统、中间件、WEB服务器以及其他必需组件的名称、版本,以及所要用到的相关补丁的版本; 5.1.4.用来执行测试工作的计算机所必需的操作系统、数据库管理系统、中间件、WEB服务 器以及其他必需组件的名称、版本,以及所要用到的相关补丁的版本; 5.1.5.是否需要专门的计算机用于被测应用的服务器环境和测试管理服务器的环境的备份; 5.1. 6.测试中所需要使用的网络环境。例如,如果测试结果同接入Internet的线路的稳定 性有关,那么应该考虑为测试环境租用单独的线路;如果测试结果与局域网内的网络速度有关,那么应该保证计算机的网卡、网线以及用到的集线器、交换机都不会成为瓶颈; 5.2.管理测试环境 5.2.1.设置专门的测试环境管理员角色:职责包括:测试环境的搭建。包括操作系统、数据 库、中间件、WEB服务器等必须软件的安装,配置,并做好各项安装、配置手册的编写; 记录组成测试环境的各台机器的硬件配置、IP地址、端口配置、机器的具体用途,以及当前网络环境的情况;测试环境各项变更的执行及记录;测试环境的备份及恢复;操作系统、数据库、中间件、WEB服务器以及被测应用中所需的各用户名、密码以及权限的管理; 5.2.2.记录好测试环境管理所需的各种文档:测试环境的各台机器的硬件环境文档,测试环 境的备份和恢复方法手册,并记录每次备份的时间、备份人、备份原因以及所形成的备份文件的文件名和获取方式;用户权限管理文档,记录访问操作系统、数据库、中间件、WEB服务器以及被测应用时所需的各种用户名、密码以及各用户的权限,并对每次变更进行记录; 5.2.3.测试环境访问权限的管理:为每个访问测试环境的测试人员和开发人员设置单独的用 户名和密码。访问操作系统、数据库、WEB服务器以及被测应用等所需的各种用户名、密码、权限,由测试环境管理员统一管理;测试环境管理员拥有全部的权限,开发人员

开发环境与测试环境搭建方案

开发环境与测试环境搭建方案 总体原则 1.开发与测试环境单独搭建,开发与测试环境的分离便于利于重现开发环境无法重现的BUG 以及便于开发人员并行地修复BUG ,如果选择开发环境来进行测试,开发人员进行某项误操作后发生系统崩溃或者系统不能正常运行的意外,此时测试工作也不得不停止。 2.测试环境与测试数据库分离,测试环境与测试数据库分离保证测试数据库的稳定性、数据准确性以及今后性能测试指标值的准确性。 3.开发环境与开发数据库共用一台,由于开发环境对及其性能要求不高,因此应用与数据库采用共用。 4.测试环境WEB 应用部署与生产环境相同,测试数据库的配置(用户、表空间、表)也需与生产环境一致。 环境管理 1.1. 系统架构 开发环境构架: 测试环境系统构架: 1.2. 硬件配置 从上述的系统架构图分析需要3台服务器组建开发与测试环境,机型选择普 通的PC Server 机器即可。 1.3. 安装软件 建议方案中给出是环境搭建的主要软件,其他的工具未在罗列中,根据具体 需要自行安装。 服务器 内存 CPU 硬盘 备注 开发服务器 2G 到4G 之间 4C ,主频2G 以上 300G 左右 测试服务器 8G-16G 之间 4C ,主频2G 以上 300G 左右 测试数据服务器 8G-16G 之间 4C ,主频2G 以上 500G 左右

权限管理 1.4. 开发环境 开发人员均可访问开发服务器应用代码与开发数据库,可以修改代码与数据 以及发布部署开发版本以便自测。 1.5. 测试环境 测试环境由版本管理员管理,负责整个测试环境的管理,包括版本部署、服 务启停、数据变更等,测试环境对开发人员只开发查询权限,仅可查询应用日志,服务运行、测试数据。 2. 版本管理 开发与测试环境安装 SVN 版本管理软件,由版本管理员负责对开发与测 试环境的版本管理工作。 3. 备份管理 1.备份主要包括开发与测试环境的代码与配置,备份方式暂为全量备份。 2.每日凌晨3点系统自动对每个项目的代码已经配置文件自动备份,备份文件名:项目名称_code_yyyymmdd.tar ,备份完成后传至备份服务器(服务器待定)。 3.每当长假(元旦、清明、五一、端午、十一、中秋、春节)前期,需手工对开发与测试环境进行全量备份。 4. 服务器 操作系统 中间件 数据库 测试工具 版本管理 工具 开发服务器 RedHat Linux 5.4 64位 Weblogic 9 Oracle 10 无 SVN 测试服务器 RedHat Linux 5.4 64位 Weblogic 9 无 JIRA SVN 测试数据服务器 RedHat Linux 5.4 64位 无 Oracle 10

复习题-测试环境搭建 (附答案)

1、Apache服务器进程配置文件是httpd.conf 。 2、在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是gzip。 3、检查已安装的文件系统/dev/had5是否正常,若检查有错则自动修复,其命令及参数是fsck –a /dev/had5。 4、在vi编辑环境下,使用 esc 键进行模式转换。 5、Sendmail邮件系统使用的两个主要协议是:SMTP和POP,前者用来发送邮 件,后者用来接收邮件。 6、rm命令可以删除文件或目录。 7、增加一个用户的命令是:adduser。 8、/bin 目录用来存放系统管理员使用的管理程序。 9、 nfs 协议用于实现Unix(/linux)主机之间的文件系统共享。 10、在Linux系统中,以文件方式访问设备。 11、编写的Shell程序运行前必须赋予该脚本文件执行权限。 12、唯一标识每一个用户的是用户 Id 和用户名。 13、DHCP可以实现动态 Ip 地址分配。 14、 ping 命令可测试网络中本机系统是否能到达一台远程主机,常常用于测试网络连通性。 15、vi编辑器具有三种工作模式:命令模式,文本输入模式和末行模式。 16、进行远程登录的命令是 telnet 。 1.终止一个前台进程可能用到的命令和操作( B ) 。 A kill B + C C shut down D halt 2.一台主机要实现通过局域网与另一个局域网通信,需要做的工作是 ( C )。 A 配置域名服务器 B 定义一条本机指向所在网络的路由 C 定义一条本机指向所在网络网关的路由 D 定义一条本机指向目标网络网关的路由 3.下列提法中,不属于ifconfig命令作用范围的是( A )。 A 配置本地回环地址 B 配置网卡的IP地址 C 激活网络适配器 D 加载网卡到内核中 4. 在日常管理中,通常CPU会影响系统性能的情况是:( A)。 A CPU已满负荷地运转 B CPU的运行效率为30% C CPU的运行效率为50% D CPU的运行效率为80% 5.在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中,

测试环境搭建及工程部署

测试环境的搭建 我所描述的这些软件安装或工程部署都是根据自己所在的开发与测试团队中所需的操作模式总结。从各个软件的安装到工程部署启动,都是按步骤及截图来说明,希望大家能够通过图解明白这个过程。 JDK6.0安装 1.JDK安装过程:直接对软件进行下一步下一步的安装(最好选择默认安装路 径)。安装完成后需对此软件进行设置,步骤如下:在我的电脑------->环境变量中新建环境变量,定义变量名为JAVA_HOME,然后输入jdk安装路径,如图所示 然后需对path变量名进行编辑,如图所示:

在变量值最后加分号隔开,然后输入%JAVA_HOME%\bin,然后点击确定即可。 此时JDK才算是完全安装好,如果没有进行环境变量的设置,那安装了JDK 相当于没有安装。 Myeclipse10.0安装与破解 2.Myeclipse10 按照软件安装提示一步步安装即可。安装完成后打开 myeclipse时会发现它是试用版需输入激活码进行激活。如果没有激活码,此时就需要对软件进行破解,破解步骤(myeclipse 9.1 破解激活,java 编写,适用于装有java环境的各种操作系统,win,linux,maxos)如下所示: 第一步:输入任意用户名 第二步:点击Systemid... 按钮,自动生成本机器的systemid。 第三步:点菜单Tools->RebuildKey 第四步:点击active按钮.会在显示区域生成 LICENSE_KEY ACTIVATION_CODE ACTIVATION_KEY 这时候不要打开myeclipse的激活页面输入。 第五步:打开菜单Tools->ReplaceJarFile,弹出文件选择对话框,到myeclipse的安装目录common文件夹下选择plugins文件夹 点击打开,程序会卡住,不要担心,正在替换文件呢!一会之后,会输出信息,文件已被替换 第六步:点菜单Tools->SaveProperites 打开你的myeclipse已经不需要再输入激活码什么的了。

Sugar测试环境搭建手册

Sugar测试环境搭建说明 第一、LAMP安装(Linux系统下安装SugarCRM) 一:安装准备工作 1、登录linux(root/123456) 2、利用netconfig命令设置IP地址等信息 (1)——设置IP、子网掩码、网关、主DNS (2)——servicenetwork restart重启网络服务使修改生效 也可以通过修改文件进行设置 vi /etc/sysconfig/network-scripts/ifcfg-eth0 设置IPADDR=IP地址,NETMASK=掩码,ONBOOT=YES,启动时启动网卡?vi /etc/r esolv.conf 设置DNS 3、设置完成后通过ifconfig命令可以查看当前系统的网络信息 4、通过SecurCRT工具链接到linux下

5、通过ZmodemUploadList添加需要从本地传输到linux下的文件,然后执行Start Zmodem Upload启动传输。 二:APACHE的安装 2.1: apache的安装

[root@sugar ~]# gzip -dhttpd-2.2.4.tar.gz?[roo t@sugar ~]# tarxvf httpd-2.2.4.tar [root@sugar ~]# cd httpd-2.2.4 [root@sugar ~]#./configure [root@sugar ~]# make [root@sugar~]# make install apache默认安装路径:/usr/local/apache2 /usr/local/apache2下面关键目录说明 conf:apache服务器的配置目录 htdocs:需要发布应用程序的目录 bin :apache服务器的可执行程序目录 2.2: apache的配置修改 [root@sugar ~]#vi/usr/local/apache2/conf/ht tpd.conf 将#ServerName www.example.com:80 中的“#”删掉,并将www.examhttps://www.wendangku.net/doc/7b15117835.html,改为本机的ip地址 2.3:apache服务安装检测 apache安装是否成功的检测 1启动apache服务 说明:apache服务的启动和停止 [root@sugar ~]# cd/usr/local/apache2/bin [root@sugar~]# ./apachectl stop这是停止apache 服务 [root@sugar ~]# ./apachectl start这是启动apache服务 2在window平台通过ie访问linux上面apache的测试页面, http://your_linux_ip/ 如图所示

windows环境下测试环境配置流程

Windows环境下服务器配置流程 一、JKD安装 安装JDK 选择安装目录安装过程中会出现两次安装提示。第一次是安装 jdk ,第二次是安装 jre 。建议两个都安装在同一个java文件夹中的不同文件夹中。(不能都安装在java文件夹的根目录下,jdk和jre安装在同一文件夹会出错) 如下图所示 1:安装jdk 随意选择目录只需把默认安装目录 \java 之前的目录修改即可 2:安装jre→更改→ \java 之前目录和安装 jdk 目录相同即可 注:若无安装目录要求,可全默认设置。无需做任何修改,两次均直接点下一步。

安装完JDK后配置环境变量 ?计算机→属性→高级系统设置→高级→环境变量

系统变量→新建 JAVA_HOME 变量。 变量值填写jdk的安装目录(本人是 E:\Java\系统变量→寻找 Path 变量→编辑 在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码) 系统变量→新建 CLASSPATH 变量 变量值填写 ? .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\(注意最前面有一点) 系统变量配置完毕 检验是否配置成功运行cmd 输入 java -version (java 和 -version 之间有空格) 若如图所示 安装JDK 选择安装目录安装过程中会出现两次安装提示。第一次是安装 jdk ,第二次是安装 jre 。建议两个都安装在同一个java文件夹中的不同文件夹中。(不能都安装在java文件夹的根目录下,jdk和jre安装在同一文件夹会出错) 如下图所示 1:安装jdk 随意选择目录只需把默认安装目录 \java 之前的目录修改即可 2:安装jre→更改→ \java 之前目录和安装 jdk 目录相同即可

开发环境与测试环境搭建办法

精心整理 开发环境与测试环境搭建方案 1.总体原则 1.开发与测试环境单独搭建,开发与测试环境的分离便于利于重现开发环境无法重现的BUG 以及便于开发人员并行地修复BUG,如果选择开发环境来进行测试,开发人员进行某项误操作后发生系统崩溃或者系统不能正常运行的意外,此时测试工作也不得不停止。 2.测试环境与测试数据库分离,测试环境与测试数据库分离保证测试数据库的稳定性、数据准确性以及今后性能测试指标值的准确性。 3.开发环境与开发数据库共用一台,由于开发环境对及其性能要求不高,因此应用与数据库采用共用。 4.测试环境WEB应用部署与生产环境相同,测试数据库的配置(用户、表空间、表)也需与生产环境一致。 2.环境管理 2.1. 系统架构 开发环境构架: 测试环境系统构架: 2.2. 硬件配置 从上述的系统架构图分析需要3台服务器组建开发与测试环境,机型选择普通的PCServer机器即可。 服务器内存CPU 硬盘备注 开发服务器2G到4G之间4C,主频2G以 300G左右 上 300G左右 测试服务器8G-16G之间4C,主频2G以 上

2.3. 安装软件 建议方案中给出是环境搭建的主要软件,其他的工具未在罗列中,根据具体需要自行安装。 3. 权限管理 3.1. 开发环境 开发人员均可访问开发服务器应用代码与开发数据库,可以修改代码与数据以及发布部署开发版本以便自测。 3.2. 测试环境 测试环境由版本管理员管理,负责整个测试环境的管理,包括版本部署、服务启停、数据变更等,测试环境对开发人员只开发查询权限,仅可查询应用日志,服务运行、测试数据。 4. 版本管理 开发与测试环境安装SVN 版本管理软件,由版本管理员负责对开发与测试环境的版本管理工作。 5. 备份管理 1.备份主要包括开发与测试环境的代码与配置,备份方式暂为全量备份。 2.每日凌晨3点系统自动对每个项目的代码已经配置文件自动备份,备份文件名:项目名称_code_yyyymmdd.tar ,备份完成后传至备份服务器(服务器待定)。 测试数据服务器 8G-16G 之间 4C ,主频2G 以上 500G 左右 服务器 操作系统 中间件 数据库 测试工具 版本管理 工具 开发服务器 RedHatLinux5.464位 Weblogic9 Oracle10 无 SVN 测试服务器 RedHatLinux5.464位 Weblogic9 无 JIRA SVN 测试数据服务器 RedHatLinux5.464位 无 Oracle10

搭建Linux学习环境

搭建学习Linux运维环境 一、虚拟机软件安装 1、虚拟软件(VMware Workstation) 可以运行在操作系统之上,也可以独立运行在硬件之上。 (1)VMware-ESX-server 独立运行在硬件之上 (2)VMware-workstation 运行在操作系统上 2、虚拟机对硬件的要求 原理:利用宿主机物理硬件资源虚拟PC设备。 宿主机:内存4G以上、ssd硬盘最好、CPU最好在i5以 上。 虚拟设备:内存(128MB-1024MB),硬盘默认8G,CPU 每 个虚拟机分配一核CPU,多个虚拟机公用一核 CPU 3、虚拟机环境的搭建步骤 (1)进入虚拟机——>File——>New Virtual Machine (Ctrl+N) Typical 创建一个虚拟机有一个比较少的步骤。 Custom 自定义模式

(2)点击“Next”下一步 Compatiableproducts:兼容产品 Limitions: 该虚拟机虚拟产品的限制 (3)点击“Next”下一步。选择安装操作系统的步骤installer disc image file:安装光盘镜像文件。 I will install the Operating System Laster

(4)点击“Next”下一步。选择要安装的操作系统类型。 如果安装Linux的CentOS 尽量不要选择CentOS 64—bit 而要选择Other Linux 2.6.x kernel 64-bit。

(5)点击“Next”下一步。 Virtual machine name: 虚拟机的名称 Local:保存地点 (6)点击“Next”下一步。选择CPU number of processors 处理器个数 number of cores per processors每个处理器核心数(常说的双核,三核,四核等) (7)点击“Next”下一步。选择内存大小。 注意:内存在安装阶段必须是1G以上,安装之后可以改为

LINUX下搭建测试环境

第一步 装载Linux虚拟机,详细步骤不再介绍。 第二步 设置IP地址等信息 (1)——设置IP、子网掩码、网关、主DNS 也可以通过修改文件进行设置 vi/etc/sysconfig/network-scripts/ifcfg-eth0设置IPADDR=IP地址,NETMASK=掩码,ONBOOT=YES,启动时启动网卡 vi/etc/resolv.conf设置DNS 第三步 通过SecurCRT工具链接到linux下 在文件菜单中选择快速连接 输入你所设置的主机名: 默认端口:22 用户名:root 点击连接 输入root用户的密码****** 点击确定

窗口显示以下页面表示连接成功 设置完成后通过ifconfig命令可以查看当前系统的网络信息

第四步 安装jdk和配置环境变量 首先在/usr/java下建立安装路径,并将文件考到该路径下: 建立安装路径: #mkdir/usr/java 上传文件: 在CRT窗口菜单进入传输-Zmodem上传列表 安装JDK_rpm #rpm–ivh jdk-7u71-linux-i586.rpm 安装完成之后需要配置环境变量 输入: #vi/etc/profile进入vi编辑器添加以下内容,蓝色字体部分按键盘上的i键进入编辑模式 unset i export JAV A_HOME=/usr/java/jdk1.7.0_71 export PATH=$JA V A_HOME/bin:$PATH export CLASSPATH=.:$JAV A_HOME/lib/dt.jar:$JAV A_HOME/lib/tools.jar unset pathmunge 输入完成之后按Esc退出编辑模式输入:wq或:x退出并保存 重启系统 #reboot 安装apache-tomcat 下载apache-tomcat-8.0.15.tar.gz包 把apache-tomcat-8.0.15.tar.gz包放入根目录下 使用命令: #tar–zxvf apache-tomcat-8.0.15.tar.gz解压缩 #cp apache-tomcat-8.0.15/usr/local/tomcat复制apache-tomcat-8.0.15到/usr/local/下并重命名为tomcat

Linux虚拟实验环境的搭建及实验设计

计算机与现代化 2010年第9期 JIS UANJI Y U XIA ND A I H UA 总第181期 文章编号:100622475(2010)0920115203 收稿日期:2010206228 作者简介:乔静(19812),女,山东济宁人,济宁医学院信息工程学院助教,山东科技大学硕士研究生,研究方向:数据挖掘。 Linux 虚拟实验环境的搭建及实验设计 乔 静,屈志强,厉 群 (济宁医学院信息工程学院,山东日照276826) 摘要:虚拟机技术可以在一个物理环境中虚拟出多个独立的逻辑环境,本文利用虚拟机技术这一特点,使用虚拟机软件 V Mware W orkstati on 为Li nux 搭建一个虚拟的综合实验环境,并设计了一个可以在该环境上开展的实验项目,方便L i nux 实验教学的开展和Li nux 爱好者的学习。关键词:Li nux ;虚拟机;虚拟技术;虚拟网络 中图分类号:TP316 文献标识码:A do:i 10.3969/.j i ssn .100622475.2010.09.033 Bu ild ing of V ir tua l Exper im en ta l E nvironm en t and E xper im en t Design in L inux Q I A O Jing ,QU Z h i 2q iang ,LI Qun (Infor m atio n Engi nee ri ng Scho o,l Ji n i ng M ed i ca lUn i versity ,R izhao 276826,Ch i na) Ab stra ct :The virtualm achine technolo gy can ficti onali ze seve ra l i ndependent logi ca l environ m ents withi n o ne phys i ca l environ 2m ent ,based o n t he character i stic ofwh ich ,t he pape r bu il ds a virt ua l co mprehensive exper i m enta l enviro n m ent for L i nuxw ith t he virt ua lm ach i ne soft wa re V Mware W orkstati on ,and a l so des i gns so m e experi m ent item s wh ich can be deve l oped in it ,wh i ch is co nvenient for the deve l op m en t of L i nux experi m ental teach i ng and t he study of Li nux am ateu rs .K ey w or ds :L i nux ;virtua lm achi ne ;virtual technol ogy ;vi rtual net work 0 引 言 真实的L i n ux 实验环境的搭建需要较多的物理设备,搭建过程也比较复杂,限制了L inux 爱好者及学生的学习。而在虚拟技术的帮助下,通过创建多个虚拟设备,可以在一套物理设备的基础上,构建出较为完善的实验环境,完成具有一定复杂性的实验,为L i n ux 的学习提供帮助。 1 虚拟技术及虚拟机 虚拟机(V irtua lMachine)是在真实硬件上模拟出来的计算机系统。虚拟机可以像真实的计算机一样安装并运行操作系统和应用软件。虚拟机与真正的物理主机没有太大的区别,不但具有CPU 、内存、硬盘、光驱,甚至还可以有BI OS 。目前,虚拟机软件主要有:V Mware 公司的V Mware W or kstati o n 和M icrosof t 公司的M icrosoft V irtual PC 。V Mware Workstation 不仅功能强大,稳定性好,而且提供了虚拟的网络设备,可以为L i n ux 实验构造出复杂的网络环境。因而本文使用 V Mware Workstation 7来构造Linux 实验环境。 2 添加硬件设备 构造虚拟实验环境首先要安装V Mware Worksta 2ti o n 7软件,然后创建虚拟机并在虚拟机上安装操作系统,最后对系统进行配置。虚拟机的创建及系统安装此过程在许多资料中已有详细说明,在此不再赘述。进行Linux 系统实验需要多台硬件设备的支持,但是虚拟机软件可以方便地为虚拟机添加虚拟硬件设备,并不需要购买。而且虚拟设备的使用方式与真实设备并无太大差别。使用频率较高的虚拟硬件设备是虚拟硬盘和虚拟网卡。2.1添加虚拟硬盘 虚拟机使用的/硬盘0实际上是在主机硬盘上创建的硬盘文件,虚拟机上一块/硬盘0就对应一个硬盘文件,可以在一台虚拟机上添加多块/硬盘0。选中虚拟机,打开/setti n g 0对话框,选中/H ard ware 0选项卡,点击/Add 0按钮,选择/H ardD isk 0,在打开的对话框中对/硬盘0参数进行设置即可。

自动化测试基本环境的搭建

1安装p y t h o n程序 下一步->下一步->Finish 2 配置环境变量

把python的安装路径添加到系统环境变量path中: Python安装成功 3 安装setuptools(直接装框架selenium的话容易出错,所以我下载了个工具辅助安装) 下载安装setuptools,解压setuptools压缩包后,用命令提示符转到安装包中所在的位置,执 行 install,进行安装 4 安装 pip(保持电脑联网) 打开cmd命令行,将目录切换到C:\Python27\Scripts下,输入命令“easy_install pip“安装pip;pip指令安装成功 5 安装 selenium(保持电脑联网) 进入所在路径(还是在C:\Python27\Scripts),运行命令行:pip install -U selenium。 成功安装selenium 注意!安装编译器有两种,eclipse或者pycharm,我推荐使用pycharm,安装pycharm的请转到单独的“安装并激活pycharm

教程.docx”文档。(下面的第6第7步是针对eclipse的安装配置) 6 安装eclipse 直接解压我的 找到文件夹下的运行即可使用(运行前请安装jdk) 安装和配置jdk请前往“WINDOWS 7 JDK 开发环境配置.doc”(这里装的是最新的jdk8,不然后面的PyDev无法正常安装) 7 安装pydev 使用eclipse添加Python解释器插件pydev。看我下面的安装截图步骤: Name:PyDev Location: OK之后等一下,正在联网查找......(大概1-2分钟) 选择PyDev,然后一路Next,进入安装路径选择界面,使用默认设置,然后 Finish。 Eclipse将下载 PyDev,可以从 Eclipse任务栏中看到下载的进度(时间比较久大约10分钟可以 去喝杯温水暖暖胃什么的) PyDev安装好后,需要重启Eclipse。 注意:安装过程可能警报 警告:你正在安装一个拥有未注册内容的软件。它的真实性和有效性(不能得到保证) 如果能确定软件的,这个可以不用管,OK继续安装 再次OK,相信此安装证书。 PyDev安装好之后,需要配置解释器。在 Eclipse 菜单栏中,选择Window > Preferences > Pydev > Python Interpreter ,在此配置 Python。首先需要添加已安装的解释器。 点击OK后跳出一个有很多复选框的窗口,最好全选,点击Ok。 到此PyDev就已经完成了配置,可以使用Eclipse开始编写Python。 在 Eclipse 菜单栏中,选择File > New >Project... Python的工程项目是这样子的;

linux搭建C开发环境

本文介绍了Linux的C开发环境的构成和安装,使读者对Linux的C开发环境能有初步的了解。 你了解Linux吗?相信现在越来越多的人会说“是”的。那么你了解到何种程度呢?不可否认,目前决大多数的Linux用户对Linux的了解还处于比较低级的层次,他们可能会几条命令、会配几种服务、会用rpm来安装软件、会操作KDE/Gnome界机等等,但是当他们遇到一些需要编译安装的软件时,面对一些简单的出错信息,他们就手足无措了。要想真正跨跃这些初级层次,你就不可能不去了解一些底层的东西,比如本文要讲到的Linux下的C开发环境以及本文之外的其它操作系统知识。 Linux和C天生有不解之源,大家可能知道Linux的操作系统内核就主要是用C写的,另外Linux下的很多软件也是用C写的,特别是一些著名的服务软件,比如MySQL、Apache 等。初学者可能在编译MySQL这样的软件时,遇到过各式各样的错误,其实只要你初步了解了Linux的C开发环境,你就能自选解决安装过程中的一些错误。 Linux的C开发环境与Windows的有所不同,在Linux下,一个完整的C开发环境包括以下三个组成: 1、函数库: glibc 要构架一个完整的C开发环境,Glibc是必不可少的,它是Linux下C的主要函数库。Glibc有两种安装方式: A.安装成测试用的函数库 在编译程序时用不同的选项来试用新的函数库 B.安装成主要的C函数库 所有新编译程序均用的函数库 Glibc2含几个附加包:LinuxThreads、locale和crypt,通常它们的文件名随版本不同而类似于下列文件名: glibc-2.06.tar.gz glibc-linuxthreads-2.0.6.tar.gz glibc-localedate-2.0.6.tar.gz glibc-crypt-2.0.6.tar.gz 2、编译器:gcc gcc(GNU CCompiler)是GNU推出的功能强大、性能优越的多平台编译器,gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,以下是gcc支持编译的一些源文件的后缀及其解释: .c为后缀的文件,C语言源代码文件; .a为后缀的文件,是由目标文件构成的档案库文件;

相关文档
相关文档 最新文档