搞乱线程计时的工具?

发布于 2024-10-22 04:03:50 字数 266 浏览 2 评论 0原文

我最近一直在开发一个多线程程序,该程序具有非常复杂的锁定不变量。我希望检查程序中是否存在死锁或竞争,但典型的单元测试可能不会显示这一点,因为线程计时可能恰好以一种导致测试通过的方式计算,即使存在错误在代码中。

我很好奇是否有一个工具可以以允许多次运行测试的方式来搞乱三者计时,每次不同的线程以不同的顺序获得不同的时间片。存在这样的工具吗?或者是否有其他好的工具可以使调试变得更容易?

该程序是用 C 编写的,但我会接受任何语言的答案,因为我主要好奇那里有什么,即使它不能直接适用于这里。

I've been working on a multithreaded program recently that has extraordinarily complex locking invariants. I was hoping to check that there are no deadlocks or races possible in the program, but a typical unit test might not show this because the thread timings might just happen to work out in a way that causes the test to pass even though an error exists in the code.

I was curious if there is a tool out there to mess with threes timings in ways that allows a test to be run multiple times, each time with different threads getting different time slices in different orders. Does such a tool exist? Or is there another good tool out there that could make debugging easier?

This program is written in C, but I'll take answers in any language since I'm mostly curious what's out there, even if it's not directly applicable here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

中二柚 2024-10-29 04:03:50

查看 Helgrind 一个基于 Valgrind 构建的工具。它似乎对它使用的 gcc 版本相当挑剔,但值得一看。

Check out Helgrind a tool built on Valgrind. It seems to be rather picky on which gcc versions it works with, but it's worth a look.

九歌凝 2024-10-29 04:03:50

如果您使用的是 Windows 平台,那么Microsoft Research 有他们的 CHESS 项目,目前仅支持VS2008。

If you are using the Windows platform, then Microsoft Research has their CHESS project, which currently only supports VS2008.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文