Chapter 7. Stopping and Continuing
49
written before the body of the loop. The
until
command appeared to step back to the beginning
of the loop when it advanced to this expression; however, it has not really gone to an earlier
statement--not in terms of the actual machine code.
until
with no argument works by means of single instruction stepping, and hence is slower than
until
with an argument.
until
location
u
location
Continue running your program until either the specified location is reached, or the current stack
frame returns.
location
is any of the forms of argument acceptable to
break
(refer to Section
7.1.1
Setting breakpoints
). This form of the command uses breakpoints, and hence is quicker
than
until
without an argument. The specified location is actually reached only if it is in the
current frame. This implies that
until
can be used to skip over recursive function invocations.
For instance in the code below, if the current location is line
96
, issuing
until 99
will execute
the program up to line
99
in the same invocation of factorial, that is, after the inner invocations
have returned.
94 int factorial (int value)
95 {
96
if (value
1) {
97
value *= factorial (value - 1);
98
}
99
return (value);
100
}
advance
location
Continue running the program up to the given location. An argument is required, anything of the
same form as arguments for the
break
command. Execution will also stop upon exit from the
current stack frame. This command is similar to
until
, but
advance
will not skip over recursive
function calls, and the target location doesn’t have to be in the same frame as the current one.
stepi
stepi
arg
si
Execute one machine instruction, then stop and return to the debugger.
It is often useful to do
display/i $pc
when stepping by machine instructions. This makes gdb
automatically display the next instruction to be executed, each time your program stops. Refer to
Section 10.6
Automatic display
.
An argument is a repeat count, as in
step
.
nexti
nexti
arg
ni
Execute one machine instruction, but if it is a function call, proceed until the function returns.
An argument is a repeat count, as in
next
.
7.3. Signals
A signal is an asynchronous event that can happen in a program. The operating system defines the
possible kinds of signals, and gives each kind a name and a number. For example, in Unix
SIGINT
is
the signal a program gets when you type an interrupt character (often
C-c
);
SIGSEGV
is the signal a
Содержание ENTERPRISE LINUX 4 - DEVELOPER TOOLS GUIDE
Страница 1: ...Red Hat Enterprise Linux 4 Debugging with gdb ...
Страница 12: ...2 Chapter 1 Debugging with gdb ...
Страница 28: ...18 Chapter 4 Getting In and Out of gdb ...
Страница 34: ...24 Chapter 5 gdb Commands ...
Страница 44: ...34 Chapter 6 Running Programs Under gdb ...
Страница 68: ...58 Chapter 8 Examining the Stack ...
Страница 98: ...88 Chapter 10 Examining Data ...
Страница 112: ...102 Chapter 12 Tracepoints ...
Страница 118: ...108 Chapter 13 Debugging Programs That Use Overlays ...
Страница 138: ...128 Chapter 14 Using gdb with Different Languages ...
Страница 144: ...134 Chapter 15 Examining the Symbol Table ...
Страница 170: ...160 Chapter 19 Debugging remote programs ...
Страница 198: ...188 Chapter 21 Controlling gdb ...
Страница 204: ...194 Chapter 22 Canned Sequences of Commands ...
Страница 206: ...196 Chapter 23 Command Interpreters ...
Страница 216: ...206 Chapter 25 Using gdb under gnu Emacs ...
Страница 296: ...286 Chapter 27 gdb Annotations ...
Страница 300: ...290 Chapter 28 Reporting Bugs in gdb ...
Страница 322: ...312 Chapter 30 Using History Interactively ...
Страница 362: ...352 Appendix D gdb Remote Serial Protocol ...
Страница 380: ...370 Appendix F GNU GENERAL PUBLIC LICENSE ...
Страница 386: ...376 Appendix G GNU Free Documentation License ...
Страница 410: ......