To debug a program is to find and remove any errors ('bugs') in it. There are a number of ways to do this.
The earliest was to use the computer's front panel, and single-step through the program, looking at the sequence of instructions executed, the contents of registers, etc. When batch operating systems came in, the usual approach was to take a core dump (a printout of the contents of main memory); this was laborious, and not an efficient use of the programmer's time.
The usual method (especially with the advent of time-sharing, although it predates that development) is to use a debugger, special software which allows many of the same capabilities that debugging through the front panel did, along with others, e.g. breakpoints, and symbolic operations.