Chapter 14.
Using gdb with Different Languages
Although programming languages generally have common aspects, they are rarely expressed in the
same manner. For instance, in ANSI C, dereferencing a pointer
p
is accomplished by
*p
, but in
Modula-2, it is accomplished by
p^
. Values can also be represented (and displayed) differently. Hex
numbers in C appear as
0x1ae
, while in Modula-2 they appear as
1AEH
.
Language-specific information is built into gdb for some languages, allowing you to express opera-
tions like the above in your program’s native language, and allowing gdb to output values in a manner
consistent with the syntax of your program’s native language. The language you use to build expres-
sions is called the
working language
.
14.1. Switching between source languages
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 ex-
pressions 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
backtrace
can 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. Refer to Section 14.2
Displaying the language
.
This is most commonly a problem when you use a program, such as
cfront
or
f2c
, that generates
C but is written in another language. In that case, make the program use
#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.
14.1.1. List of filename extensions and languages
If a source file name ends in one of the following extensions, then gdb infers that its language is the
one indicated.
.c
C source file
.C
.cc
.cp
.cpp
.cxx
.c++
C
++
source file
.m
Objective-C source file
Summary of Contents for ENTERPRISE LINUX 3 - SECURITY GUIDE
Page 1: ...Red Hat Enterprise Linux 3 Debugging with gdb ...
Page 12: ...2 Chapter 1 Debugging with gdb ...
Page 28: ...18 Chapter 4 Getting In and Out of gdb ...
Page 34: ...24 Chapter 5 gdb Commands ...
Page 44: ...34 Chapter 6 Running Programs Under gdb ...
Page 68: ...58 Chapter 8 Examining the Stack ...
Page 98: ...88 Chapter 10 Examining Data ...
Page 112: ...102 Chapter 12 Tracepoints ...
Page 118: ...108 Chapter 13 Debugging Programs That Use Overlays ...
Page 138: ...128 Chapter 14 Using gdb with Different Languages ...
Page 144: ...134 Chapter 15 Examining the Symbol Table ...
Page 170: ...160 Chapter 19 Debugging remote programs ...
Page 198: ...188 Chapter 21 Controlling gdb ...
Page 204: ...194 Chapter 22 Canned Sequences of Commands ...
Page 206: ...196 Chapter 23 Command Interpreters ...
Page 216: ...206 Chapter 25 Using gdb under gnu Emacs ...
Page 296: ...286 Chapter 27 gdb Annotations ...
Page 300: ...290 Chapter 28 Reporting Bugs in gdb ...
Page 322: ...312 Chapter 30 Using History Interactively ...
Page 362: ...352 Appendix D gdb Remote Serial Protocol ...
Page 380: ...370 Appendix F GNU GENERAL PUBLIC LICENSE ...
Page 386: ...376 Appendix G GNU Free Documentation License ...
Page 410: ......