1

我使用 Opensplice DDS 6.7 创建了一个工具来创建阅读器,等待回调在读取的消息上执行,并打印消息的值。我们将 Google Protobuf 用于我们的消息结构。打印消息的值并执行return 0;后,程序需要将近 5 秒才能真正终止。

单步执行 GDB 可以看到对 Protobuf 中的析构函数的许多调用以及来自 opensplice 的线程连接。是否有 unix 工具或 GDB 工具来分析线程/函数的挂钟执行时间或函数被调用的次数,以帮助缩小导致破坏挂起的库或包装器的范围?

4

1 回答 1

0

Strace 是我一直在寻找的工具。帮助确定销毁期间发生的情况,以揭示 opensplice 的线程之一在终止前休眠了约 5 秒。最终发现问题出在使用系统 opensplice 配置而不是应用程序的一个设置。切换使用哪个 opensplice 配置后,程序快速而优雅地终止。

于 2021-08-31T22:40:15.217 回答