复制竞态条件:继续gdb中除一个线程外的所有线程

随
订阅者
297
文章
0
粉丝
测试交流评论153字数 324阅读1分4秒阅读模式
摘要我在我的应用程序代码中发现了一个竞争条件,现在我想知道如何为它创建一个测试用例,该测试用例可以作为一个测试脚本来运行,该测试脚本决定触发特定的。。。

我在我的应用程序代码中发现了一个竞争条件,现在我想知道如何为它创建一个测试用例,该测试用例可以作为测试脚本运行,该脚本决定触发竞争条件的特定效果,并且不需要复制代码补丁和/或手动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

 
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证