stepi, stepi arg,

Execute one machine instruction, then stop and return to the

si

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. See “Automatic display” (page 89).

 

An argument is a repeat count, as in step.

nexti, nexti arg,

Execute one machine instruction, but if it is a function call,

ni

proceed until the function returns.

 

An argument is a repeat count, as in next.

5.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 program gets from referencing a place in memory far away from all the areas in use; SIGALRM occurs when the alarm clock timer goes off (which happens only if your program has requested an alarm).

Some signals, including SIGALRM, are a normal part of the functioning of your program. Others, such as SIGSEGV, indicate errors; these signals are fatal (they kill your program immediately) if the program has not specified in advance some other way to handle the signal. SIGINT does not indicate an error in your program, but it is normally fatal so it can carry out the purpose of the interrupt: to kill the program.

GDB has the ability to detect any occurrence of a signal in your program. You can tell GDB in advance what to do for each kind of signal.

Normally, GDB is set up to ignore non-erroneous signals like SIGALRM (so as not to interfere with their role in the functioning of your program) but to stop your program immediately whenever an error signal happens. You can change these settings with the handle command.

5.3 Signals

67