2011-10-20 3 views
0

ここで私の他の質問を明確にしようとします。私は基本的にgdbを使ってmyfile.cがどこにsegfaultingしているかを調べようとしています。しかし、私はgdbでmyfile.cを直接調べることはできませんが、私はmyfile.cに用意したメソッドを無作為にテストするドライバプログラム(vdriver)を与えられます。GDB: "list"と入力するとCでコードが表示されますが、 "アドレス__________のソースファイルはありません"

したがって、gcc- ggdb -c vdriver.c myfile.c myfile_depends_on_this.c "segfaultsまで" gdb vdriver "を実行します。その時点で、 "list * $ eip"と入力するだけで、 "0x804somethingのソースファイルがありません"というメッセージが出力されます。

myfileなどのヘッダーファイルの "gcc -ggdb -c etcなど"についても混乱します。 hとmyfile_depends_on_this.hは、コマンドに含めるべきかどうかはわかりません。

しかし、とにかく、 "No source file for address"の問題を修正する方法はありますか?ここで

+0

コードの作成に使用したコマンドとGDBセッション全体を表示してください。 –

+0

また、新しい情報を開く代わりに、以前の質問を新しい情報で編集してください。 –

+1

[GDBを使用する場合、GDBが停止しているC(アセンブリではない)命令をどのように表示しますか?](http://stackoverflow.com/questions/7830226/when-using-gdb-how-do- gdb-has-s) –

答えて

1

は(それは私にはかなりはっきりしていない)私はあなたの質問を理解する方法です:

  1. セグメンテーションフォルト後にデバッグする方法?
  2. .hファイルをコンパイルする方法は?

がクラッシュした後

  1. に、あなたはもはや実行コンテキストになることはありませので、もはや通常のデバッグコマンドを使用することができます。代わりに、gccはコアファイルを生成します。

    http://www.network-theory.co.uk/docs/gccintro/gccintro_38.html

  2. .hファイルがコンパイルされるファイルのリストに含まれていません。で説明したようにあなたは、おそらく、(例えば)、その後、デバッグ、最初のコアファイルのためのスペースを割り当てる必要があります。これは、親切に手の込んだあなたの質問ではなかった場合、それらは

セマンティック通常の#include(またはの#include「ファイル.h」)を使用して.cファイル内から参照されています。