【发布时间】:2014-06-25 02:59:08
【问题描述】:
我正在用clang++ -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -g -O0 编译我的程序,当我运行它时,输出是:
matiu@matiu-laptop:~/projects/json++11/build$ ./tests
.......==10534== WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x7fe7602d4a51 (/home/matiu/projects/json++11/build/tests+0x106a51)
#1 0x7fe7602dfca6 (/home/matiu/projects/json++11/build/tests+0x111ca6)
...
#31 0x7fe75edbaec4 (/lib/x86_64-linux-gnu/libc.so.6+0x21ec4)
#32 0x7fe7602808dc (/home/matiu/projects/json++11/build/tests+0xb28dc)
Uninitialized value was created by a heap allocation
#0 0x7fe76026e7b3 (/home/matiu/projects/json++11/build/tests+0xa07b3)
#1 0x7fe7602ee7da (/home/matiu/projects/json++11/build/tests+0x1207da)
...
#18 0x7fe7602c1c4c (/home/matiu/projects/json++11/build/tests+0xf3c4c)
#19 0x7fe7602873fa (/home/matiu/projects/json++11/build/tests+0xb93fa)
SUMMARY: MemorySanitizer: use-of-uninitialized-value ??:0 ??
Exiting
我怎样才能让它像漂亮的例子一样显示行号:http://clang.llvm.org/docs/MemorySanitizer.html
我怀疑这可能是不可能的,因为我的程序是一大堆嵌套的 lambda:https://github.com/matiu2/json--11/blob/master/tests.cpp
【问题讨论】:
-
所以它会在示例中打印行号,而不是在您的代码中?
addr2line可能会有所帮助,但不是您真正想要的。 -
感谢@keltar,这绝对有帮助:$ addr2line -e tests 0x15c59a /.../bandit/src/bandit/bandit/grammar.h:126