Yes, the first column is the address column. Executables are loaded at specific addresses (each section has its own), unless they are specially marked as PIE (Position Independent Executable) in which case the addresses displayed would start from 0, and would indeed be just offsets from a randomized load address. Shared libraries, however, are position independent by default and may be mapped at different addresses.
The second column is the machine code itself: the program as a sequence of bytes as it's stored in memory and what the processor actually sees and executes.
You can use the stepi
or nexti
(short forms si
and ni
, respectively) if you don't have debug info. layout asm
and friends could also be useful if you are not using some GUI frontend.