The symbol files have to originate from the same compile run as their installed stripped counterparts on the target system.
This is obvious but a common mistake. If a binary is recompiled and we need a stripped and an unstripped copy the unstripped counterparts, have to be reinstalled on the target.
When an executable or library file is compiled, the compiler generates machine code that is specific to the target system and configuration, such as the operating system, processor architecture, and optimization settings. Symbol files contain information that maps the machine code in the executable or library file back to the original source code, allowing the debugger to provide useful information during program debugging.
If the symbol files were generated from a different compile run than the executable or library files on the target system, the symbol information may not match the executable or library code. This can result in misleading or incorrect information being displayed by the debugger, making it more difficult to debug the program effectively.