如何使用GCC消毒剂

时间:2018-12-03 11:17:53

标签: c debugging gcc

为什么这不起作用?:

prog.c文件

#include <stdio.h>

int main(void)
{
    int i, j;
    printf("\n%d\n%d\n", i, j);

    return 0;
}

调试文件:

#!/bin/bash
g++ -Wall -Wextra -Wpedantic -O0 -g3 -fsanitize=address -o temp/debug.out src/prog.c
./temp/debug.out

运行:

./debug
prog.c: In function ‘main’:
prog.c:6:9: warning: ‘i’ is used uninitialized in this function [-Wuninitialized]
        printf("\n%d\n%d\n", i, j);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~
prog.c:6:9: warning: ‘j’ is used uninitialized in this function [-Wuninitialized]

0
0
==90==LeakSanitizer has encountered a fatal error
==90==HINT: For debugging, try setting environment variable LSAN_OPTION=verbosity=1:log_threads=1
==90==LeakSanitizer does not work under ptrace (strace, gdb, etc)

我是使用调试工具的新手,但是关于编译器的手册页,关于该主题的知识并不多。那请有人帮我吗?

这是在新打开的终端上的Linux(Ubuntu)Windows 10子系统上执行的。

我想使用在-fno-sanitize=all的手册页中找到的gcc选项,但是对于我想到的任何错误,它似乎都一言不发。

1 个答案:

答案 0 :(得分:0)

我发现这是我使用的WSL的问题(我认为说一个我使用WSL并不重要)

原来我需要写LSAN_OPTION=verbosity=1:log_threads=1; g++ -Wall...