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.
まず第一に、あなたが持っているのはオブジェクトファイルではなく完全にコンパイルされたプログラムなので、.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)
ソースレベルのデバッグ情報を生成するパラメーター-gを追加する必要があります。次のようになります。
gcc -g prog.c
その後、一般的な方法でgdbを使用できます。
私は同じ問題を抱えており、これに従いました Post 、それは私の問題を解決しました。
次の2つの手順に従います。
-O0
であることを確認してください-ggdb
フラグを追加します幸運を!
コンパイルマシンのgcc
およびテストマシンのgdb
に異なるバージョンがある場合は、debuginfo format incompatibilityに直面している可能性があります。
これを修正するには、debuginfo形式をダウングレードしてください:
gcc -gdwarf-3 ...
gcc -gdwarf-2 ...
gcc -gstabs ...
gcc -gstabs+ ...
gcc -gcoff ...
gcc -gxcoff ...
gcc -gxcoff+ ...
または、gdb
を使用しているgcc
と一致させます。