no debugging symbols found when using gdb

前端 未结 7 1071
南方客
南方客 2020-12-12 20:59

GNU gdb Fedora (6.8-37.el5) Kernal 2.6.18-164.el5

I am trying to debug my application. However, everytime I pass the binary to the gdb it says:

(         


        
相关标签:
7条回答
  • 2020-12-12 21:09

    Hope the sytem you compiled on and the system you are debugging on have the same architecture. I ran into an issue where debugging symbols of 32 bit binary refused to load up on my 64 bit machine. Switching to a 32 bit system worked for me.

    0 讨论(0)
  • 2020-12-12 21:11

    The application has to be both compiled and linked with -g option. I.e. you need to put -g in both CPPFLAGS and LDFLAGS.

    0 讨论(0)
  • 2020-12-12 21:15

    The most frequent cause of "no debugging symbols found" when -g is present is that there is some "stray" -s or -S argument somewhere on the link line.

    From man ld:

       -s
       --strip-all
           Omit all symbol information from the output file.
    
       -S
       --strip-debug
           Omit debugger symbol information (but not all symbols) from the output file.
    
    0 讨论(0)
  • Some Linux distributions don't use the gdb style debugging symbols. (IIRC they prefer dwarf2.)

    In general, gcc and gdb will be in sync as to what kind of debugging symbols they use, and forcing a particular style will just cause problems; unless you know that you need something else, use just -g.

    0 讨论(0)
  • 2020-12-12 21:23

    You should also try -ggdb instead of -g if you're compiling for Android!

    0 讨论(0)
  • 2020-12-12 21:23

    I know this was answered a long time ago, but I've recently spent hours trying to solve a similar problem. The setup is local PC running Debian 8 using Eclipse CDT Neon.2, remote ARM7 board (Olimex) running Debian 7. Tool chain is Linaro 4.9 using gdbserver on the remote board and the Linaro GDB on the local PC. My issue was that the debug session would start and the program would execute, but breakpoints did not work and when manually paused "no source could be found" would result. My compile line options (Linaro gcc) included -ggdb -O0 as many have suggested but still the same problem. Ultimately I tried gdb proper on the remote board and it complained of no symbols. The curious thing was that 'file' reported debug not stripped on the target executable.

    I ultimately solved the problem by adding -g to the linker options. I won't claim to fully understand why this helped, but I wanted to pass this on for others just in case it helps. In this case Linux did indeed need -g on the linker options.

    0 讨论(0)
提交回复
热议问题