Starting your program
The execution of a program is affected by certain information it receives from its superior. GDB provides ways to specify this information, which you must do before starting your program. (You can change it after starting your program, but such changes affect your program the next time you start it.) This information may be divided into the following categories:
- set nto-cwd path
- Specify the remote process's working directory. You should do this before starting your program.
- run or r
- Use the run command to start your program under GDB. You must
first specify the program name
with an argument to GDB (see the description of the
gdb
utility).
The run creates an inferior process and makes that process run your program.
- Arguments
- Specify the arguments to give your program as the arguments of the run command. If a shell is available on your target, the shell is used to pass the arguments, so that you may use normal conventions (such as wildcard expansion or variable substitution) in describing the arguments. In Unix systems, you can control which shell is used with the SHELL environment variable. See Your program's arguments.
- Environment
- Your program normally inherits its environment from GDB, but you can use the GDB commands set environment and unset environment to change parts of the environment that affect your program. See Your program's environment.
If the modification time of your symbol file has changed since the last time GDB read its symbols, GDB discards its symbol table and reads it again. When it does this, GDB tries to retain your current breakpoints.
Here's an example of starting a program for local debugging:
(gdb) file /tmp/helloworld
Reading symbols from /tmp/helloworld...done.
(gdb) b main
Breakpoint 1 at 0x804860c: file ./main.c, line 5.
(gdb) r
Starting program:
Remote: /tmp/helloworld
Breakpoint 1, main () at ./main.c:5
5 {
(gdb)
Here's an example of starting the program for remote debugging:
(gdb) target qnx mytst:8000
Remote debugging using mytst:8000
Remote target is little-endian
(gdb) file /tmp/helloworld
Reading symbols from /tmp/helloworld...done.
(gdb) upload /tmp/helloworld /tmp/helloworld
(gdb) b main
Breakpoint 1 at 0x804860c: file ./main.c, line 5.
(gdb) r
Starting program:
Remote: /tmp/helloworld
Breakpoint 1, main () at ./main.c:5
5 {
(gdb)
If your communication line is slow, you might need to set the timeout for remote reads:
set nto-timeout time
where time is the timeout, in seconds. The default is 10 seconds.