 Some debuggers operate on a single specific language while others can handle multiple languages transparently.For example, if the main target program is written in COBOL but calls assembly language subroutines and PL/1 subroutines, the debugger may have to dynamically switch modes to accommodate the changes in language as they occur.Some debuggers also incorporate memory protection to avoid storage violations such as buffer overflow.