Monday, July 30, 2007

如何产生core文件?

当我的应用程序崩溃或出现段错误的时候,如何产生core文件?
解决方法:
 
在红帽企业版Linux上默认是不产生core文件。这个限制是在/etc/profile里面设置的:
ulimit -S -c 0 > /dev/null 2>1
 
有几种方法可以让系统产生core文件。第一个方法是修改/etc/profile里面的ulimit命令,如下:
ulimit -S -c unlimited > /dev/null 2>1
 
上面的设置允许系统上的所有用户产生没有文件大小限制的core文件。
 
如果只需要对部分用户或组开放产生core文件的权限,需要编辑/etc/security/limits.conf文件。例如,所有在"devel"组里面的用户可以产生core文件:
 
#<domain> <type>  <item>  <value>
@devel  soft core <value>
 
<value>是core文件的最大块大小。 在/etc/security/limits.conf文件里面有配置参数的详细说明。提示,如果想通过limits.conf里面的设置来控制用户是否可以产生core文件,需要把/etc/profile里面的ulimits设置注释掉:
 
# No core files by default
# ulimit -S -c 0 > /dev/null 2>1
 
如果应用是通过daemon命令来启动的,编辑/etc/init.d/functions,注释掉ulimit的设置或改变这行:
ulimit -S -c 0 >/dev/null 2>1
 
通过上面的设置,应用程序应该可以产生core文件。如果不能产生core文件,请检查您的应用程序是否拥有正确的uid,在程序执行的时候是否有使用setuid改变程序的uid。 在红帽企业Linux 3上面, 可以通过下面的命令允许使用setuid的应用程序产生core文件:
echo 1 > /proc/sys/kernel/core_setuid_ok
 
另外,您也可以在应用程序中添加下面的代码来实现:
prctl(PR_SET_DUMPABLE, 1);
 
默认情况下,core文件会创建在应用程序的工作目录下。如果您想指定core文件存放的目录,您可以执行以下命令(用您要保存的路径替换/tmp):
echo "/tmp" > /proc/sys/kernel/core_pattern

Sunday, July 29, 2007

AutoMake 条件编译

AutoMake
第一节, 上一节, 下一节, 最后一节, 回到目录 
----------------------------------------------------------------------
----------

条件判断


Automake支持一种简单形式的条件判断。 

在使用条件判断之前,必须在configure.in中定义 AM_CONDITIONAL,这个宏有两
个参数。 

第一个参数是条件的名字。名字必须以字母开头,可包含字母、数字和下划线。
 

第二个参数是一个shell的条件表达式,可用于shell的if语句。条件表达式在执
行configure时进行求值。 

一般来说条件判断依赖于用户提供给configure脚本的选项。在下面的例子中,如
果用户指定了`--enable-debug',则条件表达式的值为真。 

AC_ARG_ENABLE(debug,
[  --enable-debug    Turn on debugging],
[case "${enableval}" in
  yes) debug=true ;;
  no)  debug=false ;;
  *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
esac],[debug=false])
AM_CONDITIONAL(DEBUG, test x$debug = xtrue)

下面是一个在`Makefile.am'中使用条件判断的例子: 

if DEBUG
DBG = debug
else
DBG =
endif
noinst_PROGRAMS = $(DBG)

else语句可以略掉。条件判断可以任意嵌套。 

请注意Automake中的条件判断与GNU Make中的条件判断并不完全相同。 Automak
e中的条件判断在执行`configure'脚本时进行检查,并影响从`Makefile.in'到`
Makefile'的转换。它们基于传递给`configure'的参数。GNU Make中的条件判断
则在make时进行检查,基于在`Makefile'中定义的以及传递给make程序的变量。
 

Automake的条件判断可与任何make程序一起工作。 


----------------------------------------------------------------------
----------
第一节, 上一节, 下一节, 最后一节, 回到目录 

Thursday, July 26, 2007

svn 笔记

1. 安装subversion
2. svnadmin create /home/wbin/svn
3. vi /home/wbin/svn/conf/svnserv.conf
    打开 
    [general]
    anon-access=read
    auth-access=write
    password-db=passwd
 
    vi /home/wbin/svn/conf/passwd
    [user]
    your_name=your_passsword
 
4. svnserve -d -r /home/WBin/svn
 
5. 建立一个临时文件夹
    cd /home
    mkdir temp
    mkdir temp/trunk
    mkdir tags
    svn import temp/ svn://localhost/projectname -m "test";
 
   
ok.
  

Wednesday, July 25, 2007

Intel 发布三种多核开发工具

Intel 发布三种多核开发工具
 
 
 
Intel 发布三种多核开发工具
多核时代的到来意味着需要用不同的方式来编写应用程序,Intel 最近发布了三种能
使多核编程更加简单的实用工具。
Intel 和AMD 等CPU 制造商一直通过加快CPU 时钟速度来提高性能,应用程序也相应
提升运行速度。
现在新的技术策略是多核CPU,就像过去在一台计算机中安装多个物理CPU 一样的对
称多处理(SMP)技术。 随着芯片制造技术的进步,现在可以在同一芯片中设计两个核
(或多个)了,Sun 公司甚至已经开始销售基于8 核CPU(UltraSparc 处理器)的服务
器。
但无论如何宣传,多核技术还是无法避免过去SMP 技术所遭遇的巨大困难 ― 开发多
线程应用程序。
Insight64 的资生CPU 市场分析家Nathan Brookwood 指出:"大多数程序员以线性方
式思考,而非平行思维。 所以当他们将应用程序运用于多线程环境下时,就很难实现其
概念,也很难进行调适。 Intel 的工具对这两方面都有所帮助。"
在一次对程序员的调查当中,Intel 发现近80%的程序员至少在从事一项以上的多线
程应用程序开发,却缺少相关工具和经验,因此过程显得很困难。
"软件开发工具还未实现到多线程阶段的飞跃,所以现在想利用多线程的优势是极其
困难的,"Intel 的一位市场主任James Reinders 说。 "我们希望程序员更加轻松的开
发程序,而不用对"多余"的线程进行管理。"
Intel 的3 种工具中只有一种是全新的。 Thread Profiler 3.0 和Thread Checker
3.0 多少是已有产品的升级版,Thread Building 却是一款全新产品。
Intel Threading Building Blocks 1.0 是一个C++ runtime library,它隐藏了将
线程分配制CPU 核心的工作,因此便简化将多线程引入应用程序的工作。 目前可通过
OpenMP 或Windows Threads 实现多线程,但两种方法都不简单。
18
用Threading Building Blocks 编写的程序能自动识别可用核心的数目,然后相应地
做出调整。 这样,一个程序既可以运行在双核机器上也可以运行在八核机器上,无需调
整。
顾名思义,Thread Checker 3.0 对线程进行检查以发现潜在错误。 新版Thread
Checker 3.0 支持基于Intel 硬件的64 位程序,开发者可以用来检查32 位和64 位的程
序,并可支持与Microsoft Visual Studio 2005 的结合。
Thread Profiler 3.0 检查线程间的交互,寻找潜在瓶颈和其它问题。 它在代码未进
行平行优化的地方检查程序代码与二进位码。
Reinders 说这些工具使得平行问题更易处理,特别是对那些刚接触平行问题的人。
"设计一个线程需要学习很多。当对其进行抽象化时我们屏蔽了很多复杂因素。"
http://www.internetnews.com/dev-news/article.php/3628921
Intel: Multiple Tools For Multi-Core Development)
(唐川 编译,检索日期:2006 年9 月11 日)

Monday, July 23, 2007

关于>&2、2>&1等重定向的详细解释

关于>&2、2>&1等重定向的详细解释
 

[原创] 关于>&2、2>&1等重定向的详细解释!


http://www.chinaunix.net 作者:hpux  发表于:2006-08-31 14:08:30
发表评论】【查看原文】【HP-UX讨论区】【关闭

在POSIX shell中,命令的结果可以通过%>;的形式来定义(其中%表示文件描述符:1为标准输出stdout、2为标准错误stderr)!系统默认%值是1,也就是1>;,而1>;可以简写为>;,也就是默认为>;。而stdout的默认目标是终端(这点不用验证吧)。另外,stderr的默认目标我个人认为也是终端,比如:
#abcddcba
sh: abcddcba: not found.
错误信息显示在终端上(对于telnet、dtterm等,那就说虚拟终端了)。

==============实验环境==============
#mkdir redtest
#cd redtest
#mkdir a4
#touch a1 a2 a3 

==============简单试验==============
#ls >;redout.lst (等同于ls 1>;redout.lst,标准输出重定向)
系统先执行>;redout.lst,生成一个空文件,然后系统执行ls,再把结果重定向到redout.lst。这时在终端看不到任何信息,但是#more redout.lst可以看到a1、a2、a3、a4和redout.lst。
#./ourgame 2>;rederr.lst (标准错误重定向)
因为系统找不到执行脚本ourgame,产生错误,但并不是显示在终端上,而是把错误信息重定向到了rederr.lst。
#more rederr.lst
sh: ourgame: not found.
==============组合试验==============
#rm rederr.lst
#rm redout.lst
#vi conj
#!/usr/bin/sh
#Email:webmaster@myhpux.com
for FN in `ls`
do
if [[ -f $FN ]]
then
echo $FN
else
cp $FN $FN.new
fi
done
//conj的作用是执行以后产生标准输出(echo)和标准错误(cp)
#chmod 755 conj
看看一下命令的结果:
#./conj 
a1 //stdout
a2 //stdout
a3 //stdout
cp: a4: is a directory. Need &quot;-R&quot; option.//stderr
conj //stdout
再试试重定向的结果:
(1)、输出重定向到文件a1,终端上只能看到标准错误:
#./conj >;a1
#./conj 1>;a1
#more a1 
a1
a2
a3
conj
(2)、错误重定向到文件a1,终端上只能看到标准输出:
#./conj 2>;a1
#more a1
cp: a4: is a directory. Need &quot;-R&quot; option.
(3)、把标准输出和标准错误都重定向到a1,终端上看不到任何信息:
#./conf >;a1 2>;&amp;1 (等同于#./conf 1>;a1 2>;&amp;1)
#more a1
a1
a2
a3
cp: a4: is a directory. Need &quot;-R&quot; option.
conj
//其中&amp;的意思,可以看成是"The same as"、"与...一样"的意思。本例中就是2>;和1>;一样,都输出到a1中。
再看一个例子:
#./conj 2>;&amp;1 >;a1
同样可以解释为2>;和1>;一样,但是这时1>;是系统默认输出到终端,所以标准错误也输出到终端;然后,系统把标准输出重定向到文件a1。

记得unixpianpianMM有个问题:
echo &quot;Usage $0 -d&quot; >;&amp;2
那么可以解释为echo &quot;Usage $0 -d&quot; 1>;&amp;2
也就是把结果输出到和标准错误一样;之前如果有定义标准错误重定向到某log文件,那么标准输出也重定向到这个log文件。

以上脚本在HP-UX11.00 L2000通过!所有定义、名词均建立在本人的实践和本人所了解的知识上,如有错误,请指正,谢谢!!!

Thursday, July 19, 2007

测试工具的选择和使用

测试工具的选择和使用


来自:程序员 作者:啄木鸟部落 [2004/04/26]

2003年第9期《程序员》上啄木鸟部落发文"测试工具的选择和使用",现将其中的工具列表摘录,以备忘

Parasoft白盒测试工具集

工具名

支持语言环境

简介

Jtest

Java

代码分析和动态类、组件测试

Jcontract

Java

实时性能监控以及分析优化

C++ Test

C,C++

代码分析和动态测试

CodeWizard

C,C++

代码静态分析

Insure++

C,C++

实时性能监控以及分析优化

.test

.Net

代码分析和动态测试

Compuware白盒测试工具集

工具名

支持语言环境

简介

BoundsChecker

C++,Delphi

APIOLE错误检查、指针和泄露错误检查、内存错误检查

TrueTime

C++,Java,Visual Basic

代码运行效率检查、组件性能的分析

FailSafe

Visual Basic

自动错误处理和恢复系统

Jcheck

M$ Visual J++

图形化的纯种和事件分析工具

TrueCoverage

C++,Java,Visual Basic

函数调用次数、所占比率统计以及稳定性跟踪

SmartCheck

Visual Basic

函数调用次数、所占比率统计以及稳定性跟踪

CodeReview

Visual Basic

自动源代码分析工具

Xunit白盒测试工具集

工具名

支持语言环境

官方站点

Aunit

Ada

http://www.libre.act-europe.fr

CppUnit

C++

http://cppunit.sourceforge.net

ComUnit

VB,COM

http://comunit.sourceforge.net

Dunit

Delphi

http://dunit.sourceforge.net

DotUnit

.Net

http://dotunit.sourceforge.net

HttpUnit

Web

http://c2.com/cgi/wiki?HttpUnit

HtmlUnit

Web

http://htmlunit.sourceforge.net

Jtest

Java

http://www.junit.org

JsUnit(Hieatt)

Javascript 1.4以上

http://www.jsunit.net

PhpUnit

Php

http://phpunit.sourceforge.net

PerlUnit

Perl

http://perlunit.sourceforge.net

XmlUnit

Xml

http://xmlunit.sourceforge.net

主流黑盒功能测试工具集

工具名

公司名

官方站点

WinRunner

Mercury

http://www.mercuryinteractive.com

Astra Quicktest

Mercury

http://www.mercuryinteractive.com

Robot

IBM Rational

http://www.rational.com

QARun

Compuware

http://www.compuware.com

SilkTest

Segue

http://www.segue.com

e-Test

Empirix

http://www.empirix.com

主流黑盒性能测试工具集

工具名

公司名

官方站点

WAS

M$

http://www.micro$oft.com

LoadRunner

Mercury

http://www.mercuryinteractive.com

Astra Quicktest

Mercury

http://www.mercuryinteractive.com

Qaload

Compuware

http://www.empirix.com

TeamTest:SiteLoad

IBM Rational

http://www.rational.com

Webload

Radview

http://www.radview.com

Silkperformer

Segue

http://www.segue.com

e-Load

Empirix

http://www.empirix.com

OpenSTA

OpenSTA

http://www.opensta.com

测试管理工具典型产品的比较

工具名称

Testdirector

ClearQuest

BMS

Bugzilla

流程定制

Y

Y

N

Y

查询功能定制

Y

Y

Y

Y

功能域定制

Y

Y

Y

Y

用户权限分级管理

Y

Y

Y

Y

Email通知

Y

Y

Y

Y

构架模式

B/S

C/S,B/S

B/S

B/S

报表定制功能

Y

,集成Crystal Report

有标准报表和高级报表,定制功能不够

Y

支持平台

Windows

Windows, Unix

Windows

Linux, FreeBSD

支持数据库

Oracle, M$ Access, SQL Server

Oracle, M$ Access, SQL Server

SQL ServerMSDE

MySQL

安装配置的复杂度

简单

有些复杂

容易

不复杂

许可证费用

昂贵

昂贵

适中

免费

售后服务

国内有多家代理公司提供相关服务

在国内有分公司提供技术支持

技术支持和服务体系完备

可自行修改源代码

与其他工具集成

本身又是测试需求、测试案例管理工具, winRunner, LoadRunner集成,并且具有多种主流Case工具接口Add-In

rational公司的其它产品无缝集成,特别与Clear Case配合以可实现UCM的配置管理体系

M$ VSS, Project

开源配置管理工具CVS

公司背景

世界主流测试软件提供商

已被IBM合并,世界著名软件公司

微软与上海市政府新成立的软件企业 

世界著名开源项目

商业化自动功能测试工具特性比较

特性

WinRunner

SilkTest

Etester

易于安装

是,不支持设置代理服务等设置

GUI对象和脚本分离

对象声明在单独的include文件中,但是case脚本中还有包含

两者都在VB脚本的case

toolbar/field定制

可以

无法定制toolbar,可以定制GUIfields内容

无法定制

操作系统

Windows

Unix,Windows

Unix, Windows

浏览器

NetScape,IE

NetScape,IE

NetScape,IE

支持测试对象

HTML,DHTML,JavaScript,VBScript,XML,JAVA applets, ActiveX,VB, PowerBuilder,Delphi,Terminal Emulator,,Oracle,SAP,PeopleSoft, Siebel

HTML, DHTML, JavaScript, XML, Java apps and applets, MFC, VB, Oracle, PowerBuilder, Delphi, SAP

Java apps and applets in M$JVM/SunJVM, HTML, DHTML, JavaScript, XML, MFC, VB, Oracle, SAP, Delphi, Terminal Emulator, PowerBuilder, Oracle, Peoplesoft

脚本语言

TSL

第四代面向对象的脚本语言4Test,类似C++

提供可编程接口,用户可使用标准语言扩展可视脚本,如VB,C++,Java

脚本调试功能

强大

类似C++Debugger

VBA Debugger结合Visual Script Debugger

允许数据驱动的测试

自动数据生成

支持

支持

不支持

允许通过数据库验证数据

通过ODBC及本地数据库连接

自带Database Tester

通过ODBC

应用程序改变后的脚本维护

直接修改GUImap

更新include 文件。

自动更新无需录制

数据库支持

市场流行的数据库

市场流行的数据库

市场流行的数据库

无人看管下的自动执行测试

通过Testdirector

允许

允许,通???>???????eTestSuite

分布式测试控制/同步/执行

Testdirector支持

支持

支持

自动创建测试结果日志

非预期错误的恢复

允许

允许

允许

与测试管理工具接口

Testdirector

自带Case管理功能。

e-test suite

图形化设计脚本执行集合

通过Testdirector设计

不支持

通过e-test suite设计

培训

有,Onsitepublic training

有,提供kickoff training

有,onsitepublic training

技术支持

曾获SSPA STAR荣誉

很好

客户对其评价

License

灵活的记费方式,既可以按使用次数计费也可以按协议算永久使用费

提供floating以及node-locked两种方式

提供Floating以及Node-locked两种方式

价格

昂贵

较贵

一般

Add-in收费

部分收费

不收费

不收费

总论

在全球的市场占有率较高,功能全面,价格昂贵

在国内的推广还处于起步阶段

价格较低,只支持web的测试,在金融、证券、电子商务等领域有广泛应用。