C++ 如何通过变量的地址获取变量

Tin*_*den 5 c++ memory-address thread-sanitizer

上下文:我正在为我的程序使用线程清理程序,它显示我的程序存在数据争用。我 100% 确定为什么(也许有太多内存访问),线程清理程序不会给出无效访问的确切堆栈跟踪。只有

Previous read of size 4 at 0x7b1800004140 by thread T36:
    [failed to restore the stack]
Run Code Online (Sandbox Code Playgroud)

我尝试history_size=7根据文档设置运行线程清理程序时,但仍然无法获取堆栈跟踪。

我知道C/C++出于安全考虑支持地址随机化,所以我用它-fno-stack-protector来编译我的程序,这使得多次运行时无效地址访问相同。

我想知道如何获取该地址上驻留的变量,以便我可以直接获取我非法访问它的位置?

我使用 bazel 作为我的构建系统,它间接依赖于 clang v13.0.0。