The debug info is stored in an elf file, just like an executable. You can have them together in the same file, or you can use a tool like objcopy to make them separate.
which is how Debian generates the -debug packages [1].
[1] https://github.com/Debian/debhelper/blob/master/dh_strip