开发进阶篇系列

开发进阶篇系列

一.  perror 错误代码查看工具

           在mysql
的使用进度中,只怕会师世各样各类的error。这个error有个别是由于操作系统引起的,比如文件或然目录不设有等等,使用perror的效益正是解释这一个错误代码的详细含义。 
perror 使用方法如下:

*       永利皇宫登录网址 1
*

    例如:钦定错误号30和56分别是指什么错误
      永利皇宫登录网址 2
    在MYSQL系统出现故障或错误后,一般用户都会去看错误日志,而不当日志里1般都会意识那样的错误编号。那时我们就足以应用那么些命令分析到底是哪个地方出标题了。

glibc_error reporting,glibc_error

  很多GNU
CCurry的函数都会侦测并告知错误条件。大家的主次供给检查实验那几个错误条件。比如:大家开辟贰个输入文件时索要看清该公文是还是不是正确的打开。若是未有正确打开,大家供给打印错误或许选拔别的科学的章程。为了利用这种错误报告机制,咱们需求包涵头文件errno.h

二 总结

       在方今几章中讲到了常用的多少个工具,其实还有像replace
(sql文本字符替换工具),这一个未来用的时候在翻看表明。
mysqlimport(数据导入工具)后续会在讲到。mysqlhotcopy(MyISAM表热备份工具)那几个只针对MyISAM存款和储蓄引擎的表,就不在表明。最终纯熟运用这么些工具,将会带来非常大方便。

检查测试错误:

  很多库函数都会回到二个例外的值来展现函数运营出错。常见的超常规值有:-壹、空指针、EOF常量。但是这一个再次回到值只好告诉你有不当发生,但不会报告您错误是什么。假设你想了然不当是怎么样,就得靠错误代码,错误代码存款和储蓄在变量errno中(在errno.h中有申明)

  errno变量包括了系统错误代码,其品种是volatile。该项目意味着其得以突然被异步线程改变,编译器从不如若其值。就算您在写随机信号处理程序应当保留改变量的值并回复其值。

永利皇宫登录网址 ,  errno的初阶值为0,际遇错误时,errno绝无或然为0。但并没有错误的时候,errno也不自然为0(库函数在功成名就运营时并不会修改errno的值)。所以,不要依照errno的值来判定错误是或不是发生。正确的做法是为每贰个函数做好文书档案,标注出错误代码的值对应的一无所能类型。那样调用退步时,你能够经过检查errno获取错误代码,然后查询函数文书档案获取错误详情。要是您想博得某一库函数的错误代码,最佳再次此前设置errno为0(大概你还想先保存以下errno的值,然后便于恢复生机该值)。

  每叁个错误代码都有1个以E起始紧跟大写字母或数字的标志名,实际为定义在errno.h中的宏。当然不是独具的宏都定义在二个errno.h中(详细的能够友善翻一翻头文件,注意不仅仅唯有贰个errno.h,多个errno.h共同定义了全套的宏)

  错误代码的值1般为正数并且都不雷同,但也有多个不等:EWOXC90LDBLOCK和EAGAIN的错误代码是同一的。除了EWO翼虎LDBLOCK和EAGAIN,你可以采纳switch语句来判定错误代码。但您不该依靠于此,你唯一能够相信的正是文书档案。

  除了GNU/Hurd系统,大致全部的系统调用被传到3个没用指针时都会回到EFAULT。所以啊,glibc的函数库表明文档中再3会不难对EFAULT的解释。

  超过5分之叁的错误代码宏名都人人皆知的好懂,假设实际不知其意能够查看手册或然

~# man errno

此间大约提多少个宏:

Macro: int EDOM
    域错误,可以理解为定义域错误。主要用在数学函数中。如果数学函数的一个参数值不在函数定义域中,则会将errno设置为EDOM

Macro: int ERANGE
    范围错误,与上面的EDOM恰好相反。EDOM是定义域的话,ERANGER就是值域了。也多用于数学函数中。如果数学函数返回值超过了约定的返回,则会将errno设置为ERANGE

Macro: int EAGAIN
    资源暂时不可获得。这种错误可能是随机的,你再次运行的时候便好了。。。EWOULDBLOCK是EAGAIN的一个别名。

 

网站地图xml地图