我使用clang来查找UndefinedBehavior错误。我使用以下选项进行debuger和链接器:
QMAKE_CXXFLAGS += -std=c++0x -fsanitize=undefined -g -fno-omit-frame-pointer
QMAKE_LFLAGS += -fsanitize=undefined
此外,我已经定义了llvm-symbolizer的路径并使用UBSAN_OPTIONS=print_stacktrace=1
参数运行我的程序:
export UBSAN_OPTIONS=print_stacktrace=1
./vapp # run my application.
我看到我有运行时错误并看到相应的调用堆栈:
runtime error: ^[[1m^[[0m^[[1mload of misaligned address 0x7faf2411b514 for type 'PlayableItem *const', which requires 8 byte alignment.
#4 0x59abba (/home/rkazmin/repo_dev/repobuild_debug/vapp+0x59abba)^M
#5 0x17eb820 (/home/rkazmin/repo_dev/repobuild_debug/vapp+0x17eb820)^M
#6 0x17f495b (/home/rkazmin/repo_dev/repobuild_debug/vapp+0x17f495b)^M
我原本预计调用堆栈会显示错误发生的代码行 - 而不是我看到偏移vapp + 0x59abba等... 如何在我的vapp中匹配这些偏移量和源代码?