上一页 1 ··· 304 305 306 307 308 309 310 311 312 ··· 329 下一页
摘要: 使用gdb调试我们将会使用GNU调试器,gdb,来调试这个程序。这是一个可以免费得到并且可以用于多个Unix平台的功能强大的调试器。他也是Linux系统上的默认调试器。gdb已经被移植到许多其他平台上,并且可以用于调试嵌入式实时系统。启动gdb让我们重新编译我们的程序用于调试并且启动gdb。$ cc -g -o debug3 debug3.c$ gdb debug3GNU gdb 5.2.1Copyright 2002 Free Software Foundation, Inc.GDB is free software, covered by the GNU General Public Li 阅读全文
posted @ 2009-05-09 09:15 jlins 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 代码监视正如我们在前面所提到的,当程序并未按我们预期的那样运行时,重读我们的程序是一个好主意。出于本章的目的,我们假设代码已经进行重新检查,并且明显的错误已经进行了处理。我们可以使用一些工具来帮助我们进行代码检查,编译器就是明显的一个。如果在我们的程序中存在任何语法错误,编译器可以通知我们。我们在后面还会提到其他的工具,lint与Splint。与编译器类似,他们会分析代码并且报告不正确的代码。监视监视就是为了收集更多程序运行的行为信息而在程序添加的代码。正如在我们的例子中所做的,我们通常会添加printf调用来输出程序运行过程中不同阶段的变量值。我们通常可以添加多个printf调用,但是我们必 阅读全文
posted @ 2009-04-26 11:12 jlins 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 第十章 调试所有的软件都会存在缺陷,通常每100行代码就会存在2到5个缺陷。这些错误通常会使得程序和库并不会预期的表现,通常会使得一个程序的行为并不会如预想的那样。Bug跟踪,标识以及修复会占用程序软件开发过程中的大量时间。在这一章,我们讨论软件缺陷,并且会考虑一些工具与技术用于跟踪特定的错误行为。这不同于测试(在各种条件下验证程序行为的任务),尽管测试与调试是相关联的,而且许多bug就是在测试过程中发现的。我们会讨论下列主题:错误类型通常的调试技术使用GDB与其他工具进行调试断言内存使用调试错误类型bug通常是由下列一些原因引起的,而其中的每一个都指出一个检测与修复的方法:规范错误:如果一个 阅读全文
posted @ 2009-04-23 23:44 jlins 阅读(176) 评论(0) 推荐(0) 编辑
摘要: Debian 过往版本的代号1.1 - Buzz 1.2 - Rex 1.3 - Bo 2.0 - Hamm 2.1 - Slink 2.2 - Potato 3.0 - Woody 3.1 - Sarge 4.0 - Etch 到目前为止Debian的发行版名称均出自Pixar的电影《Toy Story》,中文名称叫做 “玩具总动员”。看看下面的发行版名称吧:Buzz(Buzz Lightyear)是个宇航员, Rex是只暴龙, Bo(Bo Peep)是个放羊的女孩, Hamm是个小猪攒钱罐, Slink(Slinky Dog)是只玩具狗, Potato当然就是Potato Head先生, 阅读全文
posted @ 2009-04-19 16:58 jlins 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 发布软件程序发布的主要问题就是要保证包含所有的文件以及确切的版本。幸运的是,网络程序社区已经发展出一个健壮的方法集合可以很多的解决这个问题。这些方法包括:使用在所有的Unix机器上均可用的标准工具将所有的组件文件打包进入一个包文件中控制软件包的版本号包文件采用包含版本号的命名约定从而用户可以很容易分辨出他们正在处理的版本包中子目录的使用可以保证当文件由包文件中解压出来时,他们就会位于一个单独的目录中,这样就不会弄混哪些包含在包文件中而哪些没有这些方法的发展就意味着程序可以很容易并且可靠的发布。程序安装的简便性是另一个问题,因为他会依赖于程序与所要安装的系统,但是至少我们可以保证我们拥有合适的组 阅读全文
posted @ 2009-03-19 21:29 jlins 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 内建规则到目前为止,我们已经在makefile文件中确切的指定了如何执行过程的每一步。事实上,makefile有大量的内建规则从而可以很大程度的简化makefile文件,特别是当我们有大量源文件的时候。下面我们创建foo.c,这是一个传统的Hello World程序。#include <stdlib.h>#include <stdio.h>int main(){ printf(“Hello World/n”); exit(EXIT_SUCCESS);}不指定makefile文件,我们尝试使用make来编译。$ make foocc foo.c -o foo$正如我们所看 阅读全文
posted @ 2009-03-14 16:20 jlins 阅读(130) 评论(0) 推荐(0) 编辑
摘要: Makefile中的注释makefile文件中的注释以#开始,并且直到本行结束。正如在C源文件中一样,makefile文件中的注释有助于作者也其他人更好的理解文件编写时所期望的作用。Makefile中的宏即使有make与makefile是管理多个源码文件工程的强大工具。然而,对于由大量的文件所组成的工程来说,他们仍显得庞大和不灵活。所以Makefile允许我们使用宏,从而我们可以将其写为更为通用的形式。我们在makefile文件中以MACRONAME=value的形式定义一个宏,然后以$(MACRONAME)或是${MACRONAME}的形式来访问MACRONAME的值。一些版本的make也可 阅读全文
posted @ 2009-03-13 22:54 jlins 阅读(156) 评论(0) 推荐(0) 编辑
摘要: jsp中文显示乱码解决方案2006-12-27 22:56一、JSP页面显示乱码二、表单提交中文时出现乱码三、数据库连接大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。一、JSP页面显示乱码下面的显示页面(display.jsp)就出现乱码:<html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; char 阅读全文
posted @ 2009-02-26 18:58 jlins 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 在这一章,我们将会讨论在Linux系统上可用的程序开发工具,其中一些在Unix系统上也可用。除了必须的编译器与调试器以外,Linux提供了一个工具集,其中的每一个工具都完成单独的工作,并且允许开发者以新的方式对这些工具进行组合。这就是Linux所继承的Unix哲学的一部分。在这里,我们将会讨论其中的一些重要工具,并且会讨论使用这些工具解决问题的例子,包括:make命令以及makefile使用RCS与CVS进行源代码控制编写手册页使用patch与tar发布软件开发环境多源代码的问题当我们编写小程序时,许多人都是简单的在编辑后通过重新编译所有的文件重新构建我们的程序。然而,对于大程序,这种简单构建 阅读全文
posted @ 2009-02-17 22:21 jlins 阅读(166) 评论(0) 推荐(0) 编辑
摘要: CD程序我们已经了解了环境以及管理数据的相关内容了,现在是更新程序的时候了。dbm数据库看起来对于存储我们的CD信息是十分合适的,所以我们会将dbm数据用作我们的新实现的基础。更新设计因为这次更新涉及到一个重要的代码重写,所以现在我们需要看一下我们的设计描述以确定是否需要修改。使用以逗号分隔的可以变化的文件来存储信息,尽管在Shell中很容易实现,但是已经证明是十分严格的了。大量的CD标题以及音轨信息在其中需要大量的逗号。如果我们使用dbm就可以放弃这种分隔方法,所以这是我们的设计需要修改的一个元素。使用单独的文件来分离标题与音轨之间的信息,看起来是一个好主意,所以我们也会使用这个逻辑安排。前 阅读全文
posted @ 2009-01-10 19:22 jlins 阅读(509) 评论(0) 推荐(0) 编辑
上一页 1 ··· 304 305 306 307 308 309 310 311 312 ··· 329 下一页