来自 首页 2019-09-23 05:11 的文章
当前位置: 澳门太阳娱乐手机登录 > 首页 > 正文

错误代码查看工具

一.  perror 错误代码查看工具

           在mysql 的采纳进程中,恐怕会并发五花八门的error。这么些error某个是由于操作系统引起的,比方文件大概目录不设有等等,使用perror的魔法就是分解那么些错误代码的事无巨细含义。  perror 使用方法如下:

*       图片 1
*

    举例:内定错误号30和59个别是指什么错误
      图片 2
    在MYSQL系统出现故障或不当后,一般顾客都会去看错误日志,而不当日志里一般都会发觉这么的荒谬编号。那时我们就能够运用那几个命令分析到底是何地出难点了。

glibc_error reporting,glibc_error

  相当多GNU C库里的函数都会侦测并告诉错误条件。大家的次序必要检验这几个不当条件。例如:大家开荒三个输入文件时供给判断该文件是还是不是科学的开发。若无科学张开,我们供给打字与印刷错误可能选取另外科学的办法。为了采纳这种错误报告机制,大家必要满含头文件errno.h

二 总结

       在面前几章中讲到了常用的多少个工具,其实还应该有像replace (sql文本字符替换工具),那些今后用的时候在查阅表明。 mysqlimport(数据导入工具)后续会在讲到。mysqlhotcopy(MyISAM表热备份工具)这么些只针对MyISAM存储引擎的表,就不在表达。最后理解使用这个工具,将会拉动相当的大低价。

检查实验错误:

  比比较多库函数都会回到八个别具一格的值来显示函数运维出错。常见的特有值有:-1、空指针、EOF常量。可是这几个再次来到值只好告诉你有错误产生,但不会告知您错误是怎么。假使您想知道不当是怎样,就得靠错误代码,错误代码存款和储蓄在变量errno中(在errno.h中有注明)

  errno变量包罗了系统错误代码,其品种是volatile。该类型意味着其能够忽地被异步线程退换,编写翻译器从不假如其值。假使您在写实信号处理程序应当保留退换量的值并回复其值。

  errno的开始值为0,境遇错误时,errno绝无或许为0。但从未不当的时候,errno也不必然为0(库函数在功成名就运维时并不会修改errno的值)。所以,不要依据errno的值来决断错误是否发生。精确的做法是为每八个函数做好文书档案,标明出错误代码的值对应的一无所长类型。那样调用失利时,你能够通过检查errno获取错误代码,然后查询函数文书档案获取错误详细的情况。假诺你想博得某一库函数的错误代码,最棒再度以前设置errno为0(或然你还想先保存以下errno的值,然后便于苏醒该值)。

  每二个错误代码都有二个以E先河紧跟大写字母或数字的号子名,实际为定义在errno.h中的宏。当然不是怀有的宏都定义在八个errno.h中(详细的能够团结翻一翻头文件,注意不止独有三个errno.h,多少个errno.h共同定义了全副的宏)

  错误代码的值一般为正数而且都区别样,但也许有贰个不一:EWO本田UR-VLDBLOCK和EAGAIN的错误代码是平等的。除了EWOCRUISERLDBLOCK和EAGAIN,你能够运用switch语句来判别错误代码。但您不该借助于此,你独一能够相信的就是文书档案。

  除了GNU/Hurd系统,大约全部的种类调用被传出一个没用指针时都会回来EFAULT。所以啊,glibc的函数库表达文书档案中往往会轻巧对EFAULT的讲授。

  大大多的错误代码宏名都了解的好懂,倘若实在不知其意能够查看手册或然

~# man errno

那边大约提多少个宏:

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

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

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

 

谬误音讯:

  我们领会错误代码,但总以为查文档不便于。幸而库文件给我们提供了错误音信告诉函数。那几个函数可以告知三个颇具表明性的错误音信。部分新闻告诉函数我们能够自身定义音信格式。

  函数strerror和perror为每贰个错误代码都提供了贰个行业内部的百无一是新闻。而变量program_invocation_short_name则能够方便获取程序的名字,告诉大家哪个程序出错。

几个函数原型:

#include <string.h>
char * strerror(int errnum);
char *strerror_r(int errnum, char *buf, size_t n);

说明:  strerror和strerror_r多少个函数大约。分歧在于安全性,官方文书档案对strerror的批注是MT-Unsafe race:strerror,而strerror_r则为MT-Safe。strerror重回二个静态申请的字符串缓冲区,该缓冲区被抱有线程分享。而strerror_r再次回到的是一个民用副本,并不被别的线程分享。其它那五个函数都有相当的大可能率引致内部存储器溢出(静态申请的缓冲区)。固然strerror_r能够钦赐字符串长度,但这长度是char *buf的。那函数有四个再次回到值,二个使用reurn重回,还应该有一个是char *buf。return重临的依旧是三个静态缓冲区。

 

#include<stdio.h>
void perror(const char *message);

证明:  perror将error message打印到正式错误输出中。假使您传进的参数是三个空指针,perror会遵照errno打字与印刷错误消息。倘使char *message非空,perror会将message当作错误消息的前缀输出。perror得及时调用,不然errno的值只怕产生变化。

 

char *program_invocation_name; //等同于argv[0]
char *program_invocation_short_name //不包含目录名。

说明:  那八个变量的初步化专门的学业由glibc库在还未调用main函数以前实行。所以在非GNU库中,那五个变量不起效果,在实际代码中我们要求定义_GNU_SOURCE宏,告诉编写翻译器使用GNU库。

  以下八个函数在任何GNU project中使用十二分布满。

void error(int status, int errnum, const char *format, ...);
void error_at_line(int status, int errnum, const char *fname, unsigned int lineno, const char *format, ...);

表达:  那四个函数的归来和status有关,即便status是0,则平常格式化打字与印刷错误消息。全局变量error_message_count也会做自增操作。错误音讯的格式如下:program_name: format_string: error_messager_for_errnon。如若status非零,那多少个函数将调用exit status,即以状态status退出(不会重临)。关于program_name:全局变量error_print_progname指向的函数决定了program_name的值。error_at_line函数有一点特别:多了fname,lineno四个参数。错误信息格式如下:program_name:fname:lineno format_string: error_mesage_for_errnon。即使全局变量error_one_per_line被安装为非零值,每一行只会打字与印刷一个荒谬音信。

  除了以上的荒谬消息函数,大家还应该有以下多少个:那个函数主要用在BSD系统中,定义在头文件err.h中,在gnu系统中不引入应用。

void warn(const char *format, ...)
void vwarn(const char *format, va_list ap)
void warnx(const char *format, ...)
void vwarnx(const char *format, va_list ap)
void err(int status, const char *format, ...)
void verr(int status, const char *format, va_list ap)
void errx(int status, const char *format, ...)
void verrx(int status, const char *format, va_list ap)

各位看官自行查看手册吧。just be a man!!!

reporting,glibc_error 相当多GNU CCurry的函数都会侦测并告诉错误条件。我们的次第要求检查实验那几个不当条件。比方:大家打开贰个输入文...

本文由澳门太阳娱乐手机登录发布于首页,转载请注明出处:错误代码查看工具

关键词: