Assertion Based Debugging And Monitoring Of Distributed Systems