请详细说明gdb能够调试程序的原理。 1. 构成调试系统的软件相关组件; 2. 带调试信息的可执行文件的特点; 3. CPU相关支持的细节; 4. 本机调试和嵌入式设备调试的异同; 5. 编译器的配合原理。