[解決済み] コンパイル済みのプログラムに対してGDBを使用してもシンボルテーブルが表示されない
質問
前置きが長くなりましたが、これは私の初めてのC言語プログラミングの授業でのプロジェクト用です。 私のコードは動作しているので教えるつもりはありませんが、実行中にGDBから受け取るエラーについてのサポートが必要です。
とはいえ、私のプロジェクトの最初の部分は、任意のファイルをバイト単位で受け取り、ある長さの文字列を探し出すプログラムを書くことでした。 これはうまくいった。 次に、コンパイルされたCファイルを3つ用意し、GDBとヘックスエディタ、そして私のプログラムを使って、プログラムのロックを解除するための隠しパスワードを割り出す必要がありました。 最初のものはできたのですが、2番目と3番目は難易度が上がっていて、何が間違っているのかがわかりません。
以下は私の問題です。
GDBを使ってコンパイルしたファイルの実行を開始すると、すぐにGDBに点滅するカーソルが表示されます。 そこで
cntrl c
でプログラムを中断させ、プログラムを一時停止させる。 次に
back
で、(9)行のリストとそのメモリ位置、メソッドの名前が表示されます。 ここで、私の問題は、もし私が
main()
と表示され、ブレークを入力しようとすると
No symbol table is loaded. Use the "file" command
.
Starting program: [program path on university server]
^C
Program received signal SIGINT, Interrupt.
0x00110430 in __kernel_vsyscall ()
Missing separate debuginfos, use: debuginfo-install glibc-2.12-
1.132.el6_5.3.i686
(gdb) list
No symbol table is loaded. Use the "file" command.
(gdb) back
#0 0x00110430 in __kernel_vsyscall ()
#1 0x00c8f8d3 in __read_nocancel () from /lib/libc.so.6
#2 0x00c2972b in _IO_new_file_underflow () from /lib/libc.so.6
#3 0x00c2b44b in _IO_default_uflow_internal () from /lib/libc.so.6
#4 0x00c2ca5a in __uflow () from /lib/libc.so.6
#5 0x00c1f36c in _IO_getline_info_internal () from /lib/libc.so.6
#6 0x00c1f2b1 in _IO_getline_internal () from /lib/libc.so.6
#7 0x00c1e1ea in fgets () from /lib/libc.so.6
#8 0x0804851c in main ()
(gdb)
などの他のスレッドも見てみましたが gdb: "シンボルテーブルが読み込まれていません" 私がクラックしようとしているファイルはすでにコンパイルされ提供されているので、これは私には関係ないと思います。 だから、私は正確にCソースファイルをデバッグしているのではなく、圧縮されたファイルをデバッグしているのです。
これは今私が苦労しているところです。
No symbol table is loaded.
という問題があります。
解決方法を教えてください。
その
No symbol table loaded
というメッセージが表示されますが、これは誤解を招く恐れがあります。
すべて
GDBがあなたに伝えているのは、あなたのバイナリにはデバッグ情報がない、ということです。
通常、この問題は、バイナリを
-g
フラグがありますが、すでにコンパイルされリンクされたファイルが与えられているため、それはできません。
デバッグ情報がない場合、特定のコマンド、例えば
list
,
break file.c:line
または
break line
意志
ない
が動作します。しかし、他のコマンドは、次のようなものです。
disassemble
と
break function
意志
が動作し、この課題ではこのコマンドを使用する必要があります。
使用できるコードと使用できないコードのコマンド一覧はありますか
私が知っている限りではありません。しかし、あなたは 推論 デバッグ情報の内容を理解することで、そのリストが何であるかを知ることができます。
デバッグ情報には、一般的に次のようなものが含まれます。
-
コードアドレス(すなわちプログラムカウンタ)からソースファイルおよび行番号へのマッピング。(このようなマッピングがない場合。
list
とbreak foo.c:123
は動作しません)。 -
ローカル変数とグローバル変数の型と名前。(これがないと
ptype
とwhatis
とinfo locals
は動作しません)。 -
ローカル変数とパラメータのスタック上の位置。(再度
info locals
,print a_local_var
,print &a_local_var
は動作しない)
関連
-
[解決済み】C言語におけるファイルスコープでの可変長配列の変更
-
[解決済み】ポインタと整数の比較で警告が出る
-
[解決済み] [Solved] なぜこのようなエラーが発生するのでしょうか。「データ定義に型またはストレージクラスがない」?
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] Bashスクリプト内でGDBを使用してコマンドライン引数を持つプログラムを実行するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] gdb: 「シンボルテーブルがロードされない
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】C言語におけるファイルスコープでの可変長配列の変更
-
[解決済み】ポインタへの代入時に互換性のないポインタ型からの初期化警告が発生した
-
[解決済み] clang: error: linker command failed with exit code 1が表示されるのはなぜですか?
-
[解決済み】メモリー・クロバリング・エラー
-
[解決済み] エラー:整数が期待されるところで集約値が使用された
-
[解決済み】未定義参照 makefile が間違っているのかも?
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。