web-dev-qa-db-ja.com

gdb: "シンボルテーブルがロードされていません"

Gdbにブレークポイントを追加しようとすると、このエラーメッセージが表示され続けます。

これらのコマンドを使用してコンパイルしました:

gcc -g main.c utmpib2.c -o main.o
and:
cc -g main.c utmpib2.c -o main.o
and also:
g++ -g main.c utmpib2.c -o main.o

「-g」の代わりに「-ggdb」も試しましたが、それでもエラーメッセージが表示されます。

次に、gdbを実行します。

$gdb

Gdbの場合:

(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.
80
user994165

まず第一に、あなたが持っているのはオブジェクトファイルではなく完全にコンパイルされたプログラムなので、.o拡張子を落としてください。ここで、エラーメッセージの内容に注意してください。問題を修正する方法はexactlyです。「シンボルテーブルがロードされていません。「file」コマンドを使用します

(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) 

または、コマンドラインでプログラムを渡すだけです。

$ 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) 
51
Kevin

ソースレベルのデバッグ情報を生成するパラメーター-gを追加する必要があります。次のようになります。

gcc -g prog.c

その後、一般的な方法でgdbを使用できます。

122
kralex

私は同じ問題を抱えており、これに従いました Post 、それは私の問題を解決しました。

次の2つの手順に従います。

  1. 最適化レベルが-O0であることを確認してください
  2. プログラムのコンパイル時に-ggdbフラグを追加します

幸運を!

8
Charles Chow

コンパイルマシンのgccおよびテストマシンのgdb異なるバージョンがある場合は、debuginfo format incompatibilityに直面している可能性があります。

これを修正するには、debuginfo形式をダウングレードしてください:

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

または、gdbを使用しているgccと一致させます。

0
ulidtko