od,objdump,size,データセグメント

2048 ワード

od


Traditional format specifications may be intermixed; they accumulate:

-A,–address-radix=RADIXアドレス表示方式(進数)


output format for file offsets. RADIX is one of[doxn],for Decimal,Octal,Hex or None o–8 d–10 x–16 n–非表示
  -v, --output-duplicates do not use * to mark line suppression

e.g.
od -A o hello

-t, –format=TYPE

select output format or formats
   -a     same as -t a,  select named characters, ignoring high-order bit

   -b     same as -t o1, select octal bytes

   -c     same as -t c,  select ASCII characters or backslash escapes

   -d     same as -t u2, select unsigned decimal 2-byte units

   -f     same as -t fF, select floats

   -i     same as -t dI, select decimal ints

   -l     same as -t dL, select decimal longs

   -o     same as -t o2, select octal 2-byte units

   -s     same as -t d2, select decimal 2-byte units

   -x     same as -t x2, select hexadecimal 2-byte units

-w 10は10列表示、デフォルトはフルスクリーン


e.g.
$ od -Ao -tc -w16 hello 0000000 h e l l o w o r l d ! \t e n 0000020 d . 0000023

size


size a.out text data bss dec hex filename 1225 288 12 1525 5f5 a.out
メモリプログラムイメージ、プロセスアドレス空間の各セグメントの役割は以下の通りです.
1、テキストセグメント(text):プログラムの実行中に一般的に変更されないプログラムを含む命令.一般にプロセス間で共有する.例えば、プロセスforkがサブプロセスを生成する場合、親子プロセスはtextセグメントを共有し、サブプロセスは親プロセスデータセグメント、スタック、スタックのコピーを取得する.const修飾のグローバル変数、文字列定数はテキストセグメントに保存されます.ただしconst修飾のローカル変数はスタックセグメントに保存されます.
2、データセグメント(data):プログラムで初期化されたグローバル変数とその値を格納するためのメモリ領域.データ・セグメントは静的メモリ割当てに属します.その内容はプログラムによって初期化される.
3、BSSセグメント(Block Started by Symbol):初期化されていないグローバル変数(具体的にはプレースホルダとして表される)と静的変数を含み、BSS segmentは静的メモリ割り当てに属する.オペレーティングシステムによって初期化されるため、実行可能なファイル領域は占有されず、データを記録するのに必要な空間の大きさにすぎません.
4、スタックセグメント(heap,stack):heapダイナミックメモリ割り当て(malloc,freeはここで使用).stackには、関数内部で宣言されたローカル変数が含まれています.

objdump:<占有>