我在我的应用程序代码中发现了一个竞争条件,现在我想知道如何为它创建一个测试用例,该测试用例可以作为测试脚本运行,该脚本决定触发竞争条件的特定效果,并且不需要复制代码补丁和/或手动gdb会话。
这种情况是一个竞赛条件的教科书示例:我有一个地址a,线程1想写入到它的位置,线程2想从中读取。文章源自玩技e族-https://www.playezu.com/179080.html
所以我在考虑为此编写一个gdb脚本,当线程1即将在地址a处写入时,该脚本会中断,然后将一些垃圾写入, 然后让除线程1之外的所有线程继续. 然后激发导致线程2保证在读取垃圾的查询,然后导致分段错误或其他问题。文章源自玩技e族-https://www.playezu.com/179080.html
我想这是相反的 将调度程序锁定设置为打开
. 我希望在gdb脚本中有这样的方法。但我很惊讶没有。希望有人能证明我错了。文章源自玩技e族-https://www.playezu.com/179080.html
此外,我对基于非gdb的解决方案持开放态度。主要的一点是,这种竞争条件测试可以自动运行,而不需要修改源代码。可以将其视为集成测试。文章源自玩技e族-https://www.playezu.com/179080.html 文章源自玩技e族-https://www.playezu.com/179080.html