"分段错误(核心转储)"在MILU,c

时间:2017-10-12 13:24:48

标签: c coredump mutation-testing

为了生成一些很棒的C程序突变体,我从GitHub克隆了Milu,成功编译并运行了它的例子,就像Compilation in UbuntuExample所说的那样。 但是,当我想生成我的c文件的突变体时,我使用gcc -E处理c文件并运行Milu,然后core dump

gcc -E myfile.c > myfile
$MILU_PATH/bin/milu -v --exec-strategy=mut-1st myfile
  

因为这个故障很容易触发而且c文件需要.h,所以我没有把代码放在这里,你可以使用任何其他的.c文件来触发它。

然后我使用gdb来显示故障的细节。

gdb -c core $MILU_PATH/bin/milu
where

显示

(gdb) where
#0  0x0804ec5f in print_source_unexposed_expr ()
#1  0x0804f08c in print_source_expr ()
#2  0x0804f2da in print_source_binary_operator ()
#3  0x0804f039 in print_source_expr ()
#4  0x0804e41a in print_source_call_expr ()
#5  0x0804f148 in print_source_expr ()
#6  0x080500dc in print_source_cstyle_cast_expr ()
#7  0x0804f166 in print_source_expr ()
#8  0x0804f319 in print_source_binary_operator ()
#9  0x0804f7ce in print_source_stmt ()
#10 0x0804e546 in print_source_compound_stmt ()
#11 0x0804e8a8 in print_source_function_decl ()
#12 0x0804d3b3 in ASTNode_print_source ()
#13 0x080540a7 in ASTUnit_print ()
#14 0x08056b0f in mutant_save ()
#15 0x0805885f in mutants_save ()
#16 0x080566a8 in milu_multi_process_mutants ()
#17 0x08055ba8 in milu_save_mutants ()
#18 0x08049e29 in main ()

进入$ MILU_PATH,我发现几乎所有这些功能都在$MILU_PATH/src/mutation/。其中之一是

void ASTUnit_print(ASTUnit * au, PrintMode mode, FILE * output)
{
    ASTNode  * ast = au->ast;

    switch(mode)
    {
    case PrintDot:
    {
        ASTNode_print_dot(ast, output);
        break;
    }
    case PrintSource:
    {
        ASTNode_print_source(ast, output);
        break;
    }
    case PrintHtml:
    {
        ASTNode_print_html(ast, output);
        break;
    }

    default:
    {

        g_log ("Milu",G_LOG_LEVEL_WARNING,"Unknown print mode") ;

        break;
    }
    }
}

我不知道为什么这些功能会导致故障。希望有人帮助我。

0 个答案:

没有答案