Software developers often must use their knowledge about the expected behaviors of software and its components to guide debugging. This paper presents a debugging technique that supports the effective use of higher level knowledge of software behaviors in bug investigation. Our technique provides behavior view diagrams (BVDs) as a new type of abstraction for users to specify their expectations of the software behavior based on scenarios. Our technique also provides an algorithm that automatically monitors the program execution based on BVDs. The algorithm can detect and track the important message exchanges that are required for implementing the scenarios. The algorithm can also inspect the program states at various points of time to check whether the scenarios progress as intended. Therefore, our technique can help software developers to uncover and locate bugs by utilizing their knowledge of the scenarios.