There are two ways to control the working language—either have gdb
set it automatically, or select it manually yourself. You can use the
set language command for either purpose. On startup, gdb
defaults to setting the language automatically. The working language is
used to determine how expressions you type are interpreted, how values
are printed, etc.
In addition to the working language, every source file that
gdb knows about has its own working language. For some object
file formats, the compiler might indicate which language a particular
source file is in. However, most of the time gdb infers the
language from the name of the file. The language of a source file
controls whether C++ names are demangled—this way
show each frame appropriately for its own language. There is no way to
set the language of a source file from within gdb, but you can
set the language associated with a filename extension. See Displaying the Language.
This is most commonly a problem when you use a program, such
f2c, that generates C but is written in
another language. In that case, make the
#line directives in its C output; that way
gdb will know the correct language of the source code of the original
program, and will display that source code, not the generated C code.