小编Tin*_*den的帖子

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

上下文:我正在为我的程序使用线程清理程序,它显示我的程序存在数据争用。我 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。

c++ memory-address thread-sanitizer

5
推荐指数
0
解决办法
136
查看次数

同步和异步 gRPC 之间的区别

我正在开发一个基于gRPC的服务,该服务需要高吞吐量。但目前我的程序在使用 C++ 同步 gRPC 时吞吐量较低。

我已通读 gRPC 文档,但没有找到有关同步/异步 API 之间差异的明确解释。除了异步可以控制完成队列之外,它对同步 API 是透明的。

我想知道同步gRPC是否将消息发送到TCP层,并等待其“ack”,从而导致下一条消息被阻塞?同时,异步 API 会异步发送它们,而不会等待后面的消息吗?

c++ tcp grpc

3
推荐指数
1
解决办法
6269
查看次数

标签 统计

c++ ×2

grpc ×1

memory-address ×1

tcp ×1

thread-sanitizer ×1