"hello world"だけをtest.c
印刷し、名前a.out
をgcc test.c
。
実行時に何が起こっているのかを正確に監視することが可能かどうか疑問に思いますa.out
。たとえば、正確に何バイトが使用されるかなど、a.out
使用された各メモリ単位(8ビット)で何が起こるのかを知りたいです。a.out
まあ、私は次のようなものが欲しい。
現在、0X00001234アドレスのメモリは00001001を格納しており、
次の瞬間に0X00001236アドレスのメモリはその値をキャッシュに格納しています。
GDBを使用して段階的に行ったようです。しかし、私には実行可能なバイナリしかありません。デバッグなしでテストできる方法が必要です。
ベストアンサー1
このオプションを使用して、デバッグ情報を含むプログラムをコンパイルできます-g
。gdb
その後、ソースコードに従い、ステップバイステップで実行すると、対応するソース.cファイルがある場合は、ソースコードの正しい行が表示されます。
また、インターフェイスgdb
を使用すると、ソースコード内の変数の対応するメモリ位置を調べることができます。
test
また、既存のガイドラインと競合するバイナリ名は使用しません。
gcc -g mytest.c -o mytest
-g コンパイラに、実行可能ファイルにシンボルテーブル情報を保存するよう指示します。これには以下が含まれます。
- シンボル名
- シンボル情報の入力
- 記号が出るファイルと行番号
バラよりデバッグオプション-gはバイナリ実行ファイルをどのように変更しますか?
私の関連答えも参照してくださいLinuxバイナリが実行するタスクの理解