精华内容
下载资源
问答
  • 报了ora-12705的错误信息 根据网上提供的信息实践了很多方法,修改设置了字符集配置,问题依旧 目前本机的字符集如图所示: ![图片说明](https://img-ask.csdn.net/upload/201510/15/1444878867_759657.jpg) 不...
  • linux下splint检测C语言代码质量

    千次阅读 2017-09-08 15:59:30
    linux下并没有pclint,可以使用splint代替。 splint使用 一.splint介绍 splint是一个静态检查C语言程序安全弱点和编写错误的工具。splint会进行多种常规检查,包括未使 用的变量,类型不一致,使用未定义变量,无法...

    在linux下并没有pclint,可以使用splint代替。
    splint使用
    一.splint介绍
    splint是一个静态检查C语言程序安全弱点和编写错误的工具。splint会进行多种常规检查,包括未使 用的变量,类型不一致,使用未定义变量,无法执行的代码,忽略返回值,执行路径未返回,无限循环等错误。同 时通过在源码中添加注记给出的附加信息,使其可以进行功能更加强大的检查。而注记,则是对文件中的函数、变 量、参数以及类型进行假定的一种的程式化的注释。
    二.splint的安装
    下载地址:

    http://www.splint.org/downloads/splint-3.1.2.src.tgz

    文件: splint-3.1.2-src.tar.gz
    大小: 2272KB
    下载: 下载

    源码包安装:

    tar zxvf splint-3.1.2.src.tgz

    cd splint-3.1.2

    mkdir /usr/local/splint

    ./configure –prefix=/usr/local/splint

    make install

    vi ~/.bashrc

    添加:
    export LARCH_PATH=/usr/local/splint/share/splint/lib
    export LCLIMPORTDIR=/usr/local/splint/share/splint/import

    source ~/.bashrc

    export PATH=/usr/local/splint/bin/splint:$PATH

    三.splint的使用
    1.空引用错误

    在引用没有指向任何内存地址的指针时,会导致这种错误.也就是使用了一个没有赋值的指针.
    splint支持一种特别的注释.这种注释写在C程序代码中,用于对程序进行特殊说明.
    如下面这段程序.使用了/@null@/进行了说明,表示说明*s的值可能会是NULL.

    //null.c
    char firstChar1 (/@null@/ char *s)
    {
    return *s;
    }

    char firstChar2 (/@null@/ char *s)
    {
    if (s ==NULL) return ‘\0’;
    return *s;
    }
    //END

    使用splint扫描这个程序时,会输出:

    splint null.c

    Splint 3.1.1 — 28 Apr 2005
    null.c: (in function firstChar1)
    null.c:3:11: Dereference of possibly null pointer s: *s
    null.c:1:35: Storage s may become null
    Finished checking — 1 code warning found
    由于firstChar1和firstChar2都使用了null说明,表示指针s可能是个NULL值.
    所以,splint会对s值的使用情况进行检查.因为firstChar2函数中,对s的值进行
    了NULL的判断.所以,没有对firstChar2函数的指针s输出警告信息.

    2.未定义的变量错误

    C语言中,要求先定义变量,而后才可使用.所以,当使用一个没有定义的变量时,编译就会出错.
    如下例,使用/@in@/说明的变量,表示必须进行定义.使用/@out@/说明的变量,表示在 执行过此函数后,这个变量就进行了定义.

    // usedef.c
    extern void setVal (/@out@/ int *x);
    extern int getVal (/@in@/ int *x);
    extern int mysteryVal (int *x);
    int dumbfunc (/@out@/ int *x, int i)
    {
    if (i > 3) return *x;
    else if (i > 1)
    return getVal (x);
    else if (i == 0)
    return mysteryVal (x);
    else
    {
    setVal (x);
    return *x;
    }
    }
    // END

    使用splint检查usedef.c

    $ splint usedef.c
    Splint 3.1.1 — 28 Apr 2005

    usedef.c: (in function dumbfunc)
    usedef.c:7:19: Value *x used before definition
    An rvalue is used that may not be initialized to a value on some execution
    path. (Use -usedef to inhibit warning)
    usedef.c:9:18: Passed storage x not completely defined (*x is undefined):
    getVal (x)
    Storage derivable from a parameter, return value or global is not defined.
    Use /@out@/ to denote passed or returned storage which need not be defined.
    (Use -compdef to inhibit warning)
    usedef.c:11:22: Passed storage x not completely defined (*x is undefined):
    mysteryVal (x)

    Finished checking — 3 code warnings
    //错误原因: 由于程序中没有对x进行定义,所以报未定义错误.但setVal()使用了/@out@/ 说明,所以
    在setVal(x);和return x;中,没有报未定义错误.

    3.类型错误

    C语言中的数据类型较多,各个之间有些细微差别.splint也可以对变量类型进行检查.

    示例1:

    //bool.c
    int f (int i, char *s,bool b1, bool b2)
    {
    if (i = 3) return b1;
    if (!i || s) return i;
    if (s) return 7;
    if (b1 == b2)
    return 3;
    return 2;
    }
    //END

    使用splint进行检查:

    $ splint bool.c
    Splint 3.1.1 — 28 Apr 2005

    bool.c: (in function f)
    bool.c:4:5: Test expression for if is assignment expression: i = 3
    The condition test is an assignment expression. Probably, you mean to use ==
    instead of =. If an assignment is intended, add an extra parentheses nesting
    (e.g., if ((a = b)) …) to suppress this message. (Use -predassign to
    inhibit warning)
    // 错误原因: if语句中的条件表达式是一个赋值语句.
    bool.c:4:5: Test expression for if not boolean, type int: i = 3
    Test expression type is not boolean or int. (Use -predboolint to inhibit
    warning)
    // 错误原因: if语句中的条件表达式的返回值,不是布尔型,而是整型.
    bool.c:4:8: Return value type bool does not match declared type int: b1
    Types are incompatible. (Use -type to inhibit warning)
    // 错误原因: 返回值是布尔型,而不是整型.
    bool.c:5:6: Operand of ! is non-boolean (int): !i
    The operand of a boolean operator is not a boolean. Use +ptrnegate to allow !
    to be used on pointers. (Use -boolops to inhibit warning)
    // 错误原因: “!”操作符的操作数不是布尔型,而是整型i.
    bool.c:5:11: Right operand of || is non-boolean (char *): !i || s
    // 错误原因: “||”操作符的右操作数不是布尔型,而是字符指针.
    bool.c:7:5: Use of == with boolean variables (risks inconsistency because of
    multiple true values): b1 == b2
    Two bool values are compared directly using a C primitive. This may produce
    unexpected results since all non-zero values are considered true, so
    different true values may not be equal. The file bool.h (included in
    splint/lib) provides bool_equal for safe bool comparisons. (Use -boolcompare
    to inhibit warning)
    // 错误原因: 使用”==”对两个布尔型进行比较.应该使用”&&”.

    Finished checking — 6 code warnings

    示例2:

    //malloc1.c
    include

    展开全文
  • -c显示更改的部分的信息 -f忽略错误信息 -h修复符号链接
     语法
    

        Locate[参数][待查找样式]

        参数

        必要参数:

        -c显示更改的部分的信息

        -f忽略错误信息

        -h修复符号链接

        -R处理指定目录以及其子目录下的所有文件

        -v显示详细的处理信息

        -deference作用于符号链接的指向,而不是链接文件本身

        选择参数:

        --reference=把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组

        --from=只有当前用户和群组跟指定的用户和群组相同时才进行改变

        --help显示帮助信息

        --version显示版本信息

        实例

        改变拥有者和群组

        [root@localhosttest6]#ll

        ---xr--r--1rootusers30210811-3008:39linklog.log

        ---xr--r--1rootusers30210811-3008:39log2012.log

        -rw-r--r--1rootusers6111-3008:39log2013.log

        -rw-r--r--1rootusers011-3008:39log2014.log

        -rw-r--r--1rootusers011-3008:39log2015.log

        -rw-r--r--1rootusers011-3008:39log2016.log

        -rw-r--r--1rootusers011-3008:39log2017.log

        [root@localhosttest6]#chownmail:maillog2012.log

        [root@localhosttest6]#ll

        ---xr--r--1rootusers30210811-3008:39linklog.log

        ---xr--r--1mailmail30210811-3008:39log2012.log

        -rw-r--r--1rootusers6111-3008:39log2013.log

        -rw-r--r--1rootusers011-3008:39log2014.log

        -rw-r--r--1rootusers011-3008:39log2015.log

        -rw-r--r--1rootusers011-3008:39log2016.log

        -rw-r--r--1rootusers011-3008:39log2017.log

    Linux相关学习网站
    http://www.unix-cd.com/

    展开全文
  • 一....随着学习的深入,其实core文件在linux下是一种ELF格式的文件,有关于什么是ELF格式大家可以自行查阅相关的内容。 实际上core文件就是可执行文件执行时的映像,也可以叫做内存的快照。保存...

    一.简单介绍什么是core文件以及他的作用
    在linux编写的C/C++可执行程序往往会出现如下图的错误,一个core dumped。由于刚开始对linux的认识不足,就忽略了这样一个重要的调试信息。
    core dumped
    随着学习的深入,其实core文件在linux下是一种ELF格式的文件,有关于什么是ELF格式大家可以自行查阅相关的内容。
    在这里插入图片描述
    实际上core文件就是可执行文件执行时的映像,也可以叫做内存的快照。保存下来可执行程序在执行过程的点点滴滴。除了内存信息之外,还有些关键的程序运行状态也会同时dump下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。core文件对于程序员诊断和调试程序是非常有帮助的,因为对于有些程序错误是很难重现的,例如指针异常,而core文件可以再现程序出错时的情景。结合gdb的调试命令可以对core文件进行调试。

    二.如何保存core文件。
    在linux下,默认的情况是core dumped并不产生core文件,因为此项功能默认是被关闭。使用ulimit -c命令可以查看是否启动core文件。执行上述命令后会有如下的三种可能分别代表着不同的意义:
    在这里插入图片描述

    1.0      		不能产生core文件
    2.unlimited     产生的core文件没有字节限制
    3.一个确定数字    当超过这个字节数时不能产生core文件,小于等于时可以产生core文件
    
    综上,只需要使用ulimit -c unlimited就可打开core文件了,注意需要在root用户下执行此命令,否则权限不足执行失败。而且这样的设置是一次性的,下次重启后就需要重新设置。一劳永逸的办法就是在配置文件写入上述的设置。此步设置好之后,当你的可执行程序再次出现core dumped的情况时,就会在当前目录下出现一个core文件。如下:

    在这里插入图片描述
    三.设置core文件的生成路径以及core文件的名称格式。
    (1)设置进程的pid作为core文件扩展名,这样的好处是当core文有很多时,可以区分是哪一个可执行程序产生的core文件,方便查找。

    1:添加pid作为扩展名,生成的core文件名称为core.pid
    0:不添加pid作为扩展名,生成的core文件名称为core
    	
    //修改方法
    1.修改 /proc/sys/kernel/core_uses_pid 文件内容为: 1
    2.在终端执行如下两条命令的任意一条
    echo "1" > /proc/sys/kernel/core_uses_pid
    sysctl -w kernel.core_uses_pid=1 kernel.core_uses_pid = 1
    

    (2)修改core文件的文件格式以及保存路径

    执行如下两条命令中的一条即可
    1.echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
    标识生成的core文件名格式是 core-%e-%p-%t,保存路径为/corefile
    sysctl -w kernel.core_pattern=/corefile/core-%e-%p-%t kernel.core_pattern = /corefile/core-%e-%p-%t
    

    以下是参数列表:

    %p - insert pid into filename 添加pid(进程id)
    %u - insert current uid into filename 添加当前uid(用户id)
    %g - insert current gid into filename 添加当前gid(用户组id)
    %s - insert signal that caused the coredump into the filename 添加导致产生core的信号
    %t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
    %h - insert hostname where the coredump happened into filename 添加主机名
    %e - insert coredumping executable name into filename 添加导致产生core的命令名
    

    三.使用core文件进行简单debug。
    测试程序一:

    #include <iostream>
    using namespace std;
    int main(){
    	int *p;
    	*p = 20;//使用野指针
    }
    

    在这里插入图片描述
    对于上述这样的一个小程序很容易定位到错误的源头,但是对于一个成百上千行的代码来说定位一个错误就不容易了尤其是在运行之后发生的bug,但是使用core文件却很容易定位。
    调试上述文件生成的core文件:
    在这里插入图片描述
    通过core文件可以清楚的定位到错误的根源,可见core文件的强大之处。
    测试程序二:

    test1.cpp
    #include <iosreram>
    using namespace std;
    
    int main(){
    	cout<<(10 / 0)<<endl;
    	return 0;
    }
    

    在这里插入图片描述
    使用test1生成的core文件定位错误:
    在这里插入图片描述

    展开全文
  • Rpm 安装openssh ...Sshd -T 查看错误信息 关于Key问题 需要cd /etc/ssh 都要是root:root Chmod 600 key相关文件 去掉确认本机sshd的配置文件(需要root权限) $ vi /etc/ssh/sshd_config ...

    Rpm 安装openssh

    Rpm -ivh 四个包  后面加  --force --nodeps 忽略依赖

     

    Sshd -T 查看错误信息

    关于Key问题

    需要cd /etc/ssh

    下都要是root:root

    Chmod 600 key相关文件

     

    去掉确认本机sshd的配置文件(需要root权限)

        $ vi /etc/ssh/sshd_config

        找到以下内容,并去掉注释符”#“

        RSAAuthentication yes
        PubkeyAuthentication yes
        AuthorizedKeysFile      .ssh/authorized_keys

    3.  如果修改了配置文件需要重启sshd服务 (需要root权限)

       $ vi /sbin/service sshd restart

    查看状态:

    systemctl status sshd.service

    启动服务:

    systemctl start sshd.service

    重启服务:

    systemctl restart sshd.service

    开机自启:

    systemctl enable sshd.service

     

    展开全文
  • 1.按 Ctrl + Alt + t 键盘组合键,启动终端 2.在终端中,输入以下命令: ...如果返回“地址解析错误”等信息,可以百度搜索其他提供 Chrome 下载的源,用其地址替换掉命令中的地址。) xzm@ubuntu...
  • 安装软件包 rpm -i 包全名 删除 rpm -e name(不是包名) 参数 -ivh 获得一个详细的安装进程 ...--replacepkgs这样 RPM 将忽略错误信息 -vih --replacepkgs -q name :查询 -qa查询所有已安装的
  • 文章目录1. 拥有者信息2. 属性2.1 文件类型2.2 权限2.3 权限修改 通过ls -l 目录/文件可以查看其属性和权限,例如查看当前文件夹的所有文件属性 ls -al 1. 拥有者信息 ...-f 忽略错误信息 -h...
  • Linux chown命令

    2020-08-05 16:17:55
    语法: ... -f : 忽略错误信息 -h :修复符号链接 -v : 显示详细的处理信息 -R : 处理指定目录以及其子目录的所有文件 --help : 显示辅助说明 --version : 显示版本 实例: 将文件 file1.t..
  • linux权限操作

    2017-06-13 10:35:17
    1 chmod a+rwx 文件,给文件赋予权限,包括权限的增加 2 chown命令将修改文件的拥有者。  chown [选项] 【所有者】:【群组】 文件  -R 处理指定目录以及其子目录... -f 忽略错误信息  -h 修复符号链接
  • Linux软件包管理

    2017-02-03 13:56:13
    1.二进制包管理 1)rpm  安装:rpm -ivh 安装包...--replacefiles 忽略文件错误信息 --nodeps 忽略依赖关系  卸载:rpm -e 软件名  升级:rpm -Uvh 软件名 2)yum 自动解决依赖关系  安装:yum install
  • linux更改用户权限

    2019-12-24 18:37:15
    chown [-cfhvR] [--help] [--version] user[:group] file... 参数 : user : 新的文件拥有者...-f : 忽略错误信息 -h :修复符号链接 -v : 显示详细的处理信息 -R : 处理指定目录以及其子目录的所有文件 --help : ...
  • linux--chown

    2017-06-23 15:56:40
    命令功能: 改变文件或者文件夹的用户和组 ... -f 忽略错误信息 -h 修复符号链接 -R 处理指定目录以及其子目录的所有文件 -v 显示详细的处理信息 -deference 作用于符号链接的指向,而不是链接文件本身 实例
  • Linux命令学习:chown

    2017-10-09 16:17:00
    功能 ...-f 忽略错误信息 -h 只对符号链接文件修改 -R 递归处理指定目录的所有文件及子目录 -v 显示指令执行过程 --help 帮助 --version 显示版本信息 参数 "用户:组": 指定所有者和所属用户组。...
  • 语法 chown [-cfhvR] [--help] [--version] user[:group] file... 参数: user : 新的文件拥有者的使用者... -f : 忽略错误信息 -h :修复符号链接 -v : 显示详细的处理信息 -R : 处理指定目录以及其子目录的...
  • Chown命令  1) 作用:将指定文件的拥有者改为指定的用户或组。... 3)-f:忽略错误信息。  4)-h:修复符号链接。  5)-v:显示详细的处理信息。  6)-R:处理指定目录以及其子目录的所有文件。...
  • chown 将指定文件的拥有者改为指定的用户或组,普通用户不能将自己的文件改变成其他的拥有者,操作权限一般为管理员。... -f 忽略错误信息  -h 修复符号链接  -R 处理指定目录以及其子目录的所有文件 ...
  • linux c编程:make Makefile工具的使用

    千次阅读 2014-04-09 13:48:27
    最近在linux平台上写C代码,学习了make工具,在此做个小...-i 忽略命令执行返回的出错信息,继续向执行,如果没有的话碰到错误就停了 -s 沉默模式, 在执行前不输出相应的命令行信息 -r 禁止build-in规则 -n 非执行
  • # 删除目录那两个文件之外...# 删除所有空目录(非空目录不会被删除,但是会出错误信息,可以忽略) find dir/ -type d | xargs rmdir -p   使用bash shell删除目录中的特定文件的3种方法_linux s...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    本文以Mandrake Linux 9.1(Kenrel 2.4.21)为例,介绍Linux下的安装和登录命令。 immortality按:请用ctrl+f在本页中查找某一部分的内容或某一命令的用法。 ----------------------------------------------------...
  • XP硬盘安装centos

    2012-12-28 22:56:24
    为了学习linux,先在机器上安装了VMware6.5并安装了redhat9.0,不知道为何原因,安装redhat过程中出现异常,忽略异常后虽然接下来的安装很顺利,但是心里很担心后面使用过程中会出现这样那样的莫名错误,果然在顺利...
  • 批处理加密方法总结 1.编写能在LINUX与WINDOWS同时运行的BAT脚本 2.... 因为BAT有一个特性,他会忽略一些简单的错误,(也就是错误的命令他只会返回一个错误信息,并不 退出BAT脚本,而是会执行一个命令
  • 因为BAT有一个特性,他会忽略一些简单的错误,(也就是错误的命令他只会返回一个错误信息,并不 退出BAT脚本,而是会执行一个命令,直到全部命令执行完毕,不管对错!) 利用个特性我们就可以在脚本前面写上LINUX的shell脚
  • 网上有帖子说可以使用--replacepkgs命令忽略错误信息,但楼主试了不太可靠。出现这种问题的原因在于,用户在安装好JDK之后,使用rm -rf命令将JDK的安装目录删除掉了,但实际上并没有删除干净。此时有一个简单的...

空空如也

空空如也

1 2 3
收藏数 60
精华内容 24
关键字:

linux下忽略错误信息

linux 订阅