Testing and debugging distributed programs using global predicates | IEEE Journals & Magazine | IEEE Xplore