Chapter 13.
Debugging Programs That Use Overlays
If your program is too large to fit completely in your target system’s memory, you can sometimes use
overlays
to work around this problem. gdb provides some support for debugging programs that use
overlays.
13.1. How Overlays Work
Suppose you have a computer whose instruction address space is only 64 kilobytes long, but which has
much more memory which can be accessed by other means: special instructions, segment registers,
or memory management hardware, for example. Suppose further that you want to adapt a program
which is larger than 64 kilobytes to run on this system.
One solution is to identify modules of your program which are relatively independent, and need not
call each other directly; call these modules
overlays
. Separate the overlays from the main program,
and place their machine code in the larger memory. Place your main program in instruction memory,
but leave at least enough space there to hold the largest overlay as well.
Now, to call a function located in an overlay, you must first copy that overlay’s machine code from
the large memory into the space set aside for it in the instruction memory, and then jump to its entry
point there.
Data
Instruction
Larger
Address Space
Address Space
Address Space
+-----------+
+-----------+
+-----------+
|
|
|
|
|
|
+-----------+
+-----------+
+-----------+
*
-- overlay 1
| program
|
|
main
|
.----| overlay 1 | load address
| variables |
|
program
|
|
+-----------+
| and heap
|
|
|
|
|
|
+-----------+
|
|
|
+-----------+
*
-- overlay 2
|
|
+-----------+
|
|
| load address
+-----------+
|
|
|
.-| overlay 2 |
|
|
|
| |
|
mapped ---
+
+-----------+
|
| +-----------+
address
|
|
|
| |
|
|
overlay
|
*
-’
| |
|
|
area
|
*
---’ +-----------+
*
-- overlay 3
|
|
*
---.
|
| load address
+-----------+
‘--| overlay 3 |
|
|
|
|
+-----------+
|
|
+-----------+
|
|
+-----------+
A code overlay
The diagram above shows a system with separate data and instruction address spaces. To map an
overlay, the program copies its code from the larger address space to the instruction address space.
Since the overlays shown here all use the same mapped address, only one may be mapped at a time.
For a system with a single address space for data and instructions, the diagram would be similar,
Summary of Contents for ENTERPRISE LINUX 4 - DEVELOPER TOOLS GUIDE
Page 1: ...Red Hat Enterprise Linux 4 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: ......