首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分段故障信号抑制

分段故障信号抑制
EN

Stack Overflow用户
提问于 2016-01-26 02:21:28
回答 2查看 1.2K关注 0票数 1

我正在分析一套有缺陷的程序,在某些测试下,它们可能会以分段故障终止。分段错误事件记录在/var/log/syslog中。

例如,下面的代码片段返回Segmentation fault并将其记录下来。

代码语言:javascript
运行
复制
    #!/bin/bash
    ./test

我的问题是如何抑制分段错误,使其不会出现在系统日志中。我尝试使用trap来捕获以下脚本中的信号:

代码语言:javascript
运行
复制
 #!/bin/bash
 set -bm
 trap "echo 'something happened'" {1..64}
 ./test

它返回:

代码语言:javascript
运行
复制
 Segmentation fault
 something happened

因此,它确实捕获了分段故障,但仍然记录了分段故障。

代码语言:javascript
运行
复制
 kernel: [81615.373989] test[319]: segfault at 0 ip 00007f6b9436d614 
 sp 00007ffe33fb77f8 error 6 in libc-2.19.so[7f6b942e1000+1bb000]
EN

回答 2

Stack Overflow用户

发布于 2016-01-26 04:29:39

您可以尝试将./test更改为以下行:

代码语言:javascript
运行
复制
. ./test

这将在同一个shell中执行./test

票数 0
EN

Stack Overflow用户

发布于 2016-03-31 08:33:08

例如,我们可以在整个日志信息系统范围内抑制日志消息系统。

代码语言:javascript
运行
复制
echo 0 >/proc/sys/debug/exception-trace

如果我们在ptrace()控制下运行日志消息(就像在调试器中那样),我们可以抑制单个进程的日志消息。这个程序是这样做的:

exe.c

代码语言:javascript
运行
复制
#include <sys/wait.h>
#include <sys/ptrace.h>

main(int argc, char *args[])
{
    pid_t pid;
    if (*++args)
    if (pid = fork())
    {
        int status;
        while (wait(&status) > 0)
        {
            if (!WIFSTOPPED(status))
                return WIFSIGNALED(status) ? 128+WTERMSIG(status)
                                           : WEXITSTATUS(status);
            int signal = WSTOPSIG(status);
            if (signal == SIGTRAP) signal = 0;
            ptrace(PTRACE_CONT, pid, 0, signal);
        }
        perror("wait");
    }
    else
    {
        ptrace(PTRACE_TRACEME, 0, 0, 0);
        execvp(*args, args);
        perror(*args);
    }
    return 1;
}

在您的例子中,它是以buggy程序作为其参数调用的。

代码语言:javascript
运行
复制
exe ./test
  • exe的退出状态通常是test的退出状态,但如果test被信号n (11用于分段故障)终止,则为128+n。

写完这篇文章之后,我意识到我们也可以使用strace来达到这个目的。

代码语言:javascript
运行
复制
strace -enone ./test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35006046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档