【发布时间】:2022-01-02 11:25:58
【问题描述】:
我正在使用 CLion 在我的 CMake 项目中尝试使用 Google sanitizers https://www.jetbrains.com/help/clion/google-sanitizers.html。我需要传递 ASAN_OPTIONS=detect_container_overflow=0 环境变量,以便 Google sanitizers 可以传递容器溢出错误。我在运行/调试配置中添加了“ASAN_OPTIONS=detect_container_overflow=0”,但它不起作用,清理程序仍然在 container_overflow 错误时停止并且不会继续。
所以我添加了一个新的环境变量 TESTENV=testenv 在我的程序中加入以下几行来检查它是否有效:
const char* asan = std::getenv("ASAN_OPTIONS");
LOG(INFO) << fmt::format("ASAN_OPTIONS {}", asan);
const char* testEnv = std::getenv("TESTENV");
LOG(INFO) << fmt::format("TESTENV {}", testEnv);
输出确实包含 TESTENV,但 ASAN_OPTIONS 的输出没有 detect_container_overflow=0:
I20220102 00:34:57.356257 966499840 test.cpp:148] ASAN_OPTIONS detect_stack_use_after_return=false log_path='/private/var/folders/rk/5dyjln0d4551nr1c6q7vz8mc0000gn/T/clion-sanitizersf4b4f3de-dbaf-4dc8-a2fb-fc5f7f2e6138/00f8647a-83ba-4e45-8f4e-2e0c0a45ef9f' stack_trace_format='pc_%p###func_%f###file_%s###line_%l###obj_%M' print_summary='true'
I20220102 00:34:57.356273 966499840 test.cpp:151] TESTENV testenv
我也试过 ASAN_OPTIONS=$ASAN_OPTIONS:detect_container_overflow=0 但输出是一样的。有人可以帮忙吗?
【问题讨论】:
标签: c++ environment-variables clion address-sanitizer sanitizer