c++ - 查找竞争条件错误

标签 c++ linux debugging race-condition

我正在调试一个复杂的多线程程序,它可能仍然存在竞争条件错误。我目前正在通过对非确定性代码重复运行相同的单元测试来调试它,直到它失败。

我知道没有简单的解决方案,但是否有一种启发式工具可以使系统的调度程序 (Linux) 在每次运行时更改抢占点,从而增加发现错误的可能性?

最佳答案

我知道一个叫做 Jinx Debugger 的工具这样做了,但它不再可用。

通常的解决方案是仔 segmentation 析代码,并“证明”锁定的正确性。这是一门艺术。

对于实验性方法,您可以使用执行随机休眠并长时间运行的函数调用来检测代码。您的函数只能休眠一小部分时间,随机几毫秒。

关于c++ - 查找竞争条件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37730262/

相关文章:

c - 使用 openssl 进行 Base64 解码的一个非常奇怪的错误

c++ - 在 C++ 中编写 3 个函数将英尺和英寸转换为米和厘米?

php - 使用 ssh 从 github 部署到 linux 服务器但权限被拒绝(公钥)。 PHP脚本

c - Debian 自动超时中的串行通信

linux - 如何用sed用字符/字符串替换空行

debugging - 调试 UIButton 时出现问题

C++ exec 执行的 bash 脚本随机停止

c++ - 尽管有静态链接,Opencv 3.2.0 .dll 仍然丢失

c++ - 在 map 中存储标准 map

ruby-on-rails - 更新方法的参数数量错误(1 对 2)