gdb: “No symbol table is loaded”

前端 未结 5 772
耶瑟儿~
耶瑟儿~ 2020-12-02 10:26

I keep getting this error mesage when trying to add a breakpoint in gdb.

I\'ve used these commands to compile:

gcc -g main.c utmpib2.c -o main.o
and:         


        
相关标签:
5条回答
  • 2020-12-02 10:39

    You have to add extra parameter -g, which generates source level debug information. It will look like:

    gcc -g prog.c
    

    After that you can use gdb in common way.

    0 讨论(0)
  • 2020-12-02 10:39

    I have the same problem and I followed this Post, it solved my problem.

    Follow the following 2 steps:

    1. Make sure the optimization level is -O0
    2. Add -ggdb flag when compiling your program

    Good luck!

    0 讨论(0)
  • 2020-12-02 10:42

    Whenever gcc on the compilation machine and gdb on the testing machine have differing versions, you may be facing debuginfo format incompatibility.

    To fix that, try downgrading the debuginfo format:

    gcc -gdwarf-3 ...
    gcc -gdwarf-2 ...
    gcc -gstabs ...
    gcc -gstabs+ ...
    gcc -gcoff ...
    gcc -gxcoff ...
    gcc -gxcoff+ ...
    

    Or match gdb to the gcc you're using.

    0 讨论(0)
  • 2020-12-02 10:43

    I met this issue this morning because I used the same executable in DIFFERENT OSes: after compiling my program with gcc -ggdb -Wall test.c -o test in my Mac(10.15.2), I ran gdb with the executable in Ubuntu(16.04) in my VirtualBox.

    Fix: recompile with the same command under Ubuntu, then you should be good.

    0 讨论(0)
  • 2020-12-02 10:56

    First of all, what you have is a fully compiled program, not an object file, so drop the .o extension. Now, pay attention to what the error message says, it tells you exactly how to fix your problem: "No symbol table is loaded. Use the "file" command."

    (gdb) exec-file test
    (gdb) b 2
    No symbol table is loaded.  Use the "file" command.
    (gdb) file test
    Reading symbols from /home/user/test/test...done.
    (gdb) b 2
    Breakpoint 1 at 0x80483ea: file test.c, line 2.
    (gdb) 
    

    Or just pass the program on the command line.

    $ gdb test
    GNU gdb (GDB) 7.4
    Copyright (C) 2012 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    [...]
    Reading symbols from /home/user/test/test...done.
    (gdb) b 2
    Breakpoint 1 at 0x80483ea: file test.c, line 2.
    (gdb) 
    
    0 讨论(0)
提交回复
热议问题