start) command's goal is to find and break at the most obvious entry
point available in the binary. Since the binary will start running, some of the
PLT entries will
also be resolved, making further debugging easier.
It will perform the following actions:
- Look up a
mainsymbol. If found, set a temporary breakpoint and go.
- Otherwise, it will look up for
__libc_start_main. If found, set a temporary breakpoint and go.
- Finally, if the previous two symbols are not found, it will get the entry point from the ELF header, set a breakpoint and run. This case should never fail if the ELF binary has a valid structure.