コマンドの概要-gcc gdbのgitの

李#gccのコマンドの概要

1つのステップは、コンパイル:gccのhello.cの-oハロー

前処理-E(.I)-S(.S)コンパイル-c(.o)は-o接続コンパイル

前処理

gccを-Eのhello.c -o hello.i -E:プリプロセッサのみを実行

結果として出力し、出力ファイル名を指定します:-o

アセンブリコードにコンパイル

GCC -Sのhello.c(.I)-O hello.s -S:アセンブリコードにCコード

アセンブリ:

gccの-cのhello.c -o hello.o -c:のみコンパイル操作、接続作業が行われていません

接続:

gccのhello.o -oハロー


-o結果として出力し、出力ファイル名を指定します。

-O0、-O1、-O2、-O3:何の最適化がないことを示すコンパイラの最適化オプションの4つのレベル、-O0、-O1デフォルト値は、最適化の最高レベル-O3

-g:ちょうどコンパイラ、コンパイル時には、デバッグ情報を生成します

分解:

gccのhello.cの-g -oハロー

objdumpの-S -dxこんにちは> hello.s

-S:ディスプレイアセンブリコード表示時間原C言語のソースコード

Unicode 与UTF-8

Unicodeは、符号化され、記憶UTF-8です

ユニコード符号化(16進数)UTF-8バイトストリーム(バイナリ)
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxxに
0800 - FFFF 1110xxxx 10xxxxxxに10xxxxxxに

UFT-8バイト数を符号化した確かに、それは3つのバイトであってもよい、1つのバイトであってもよいです。最大の利点は、UTF-8互換のASCIIコードである。しかし、文字はバイトに保存されているので、現在広く使用されています。

UTF-8の任意のバイトBを符号化するための、B最初のビットが0である場合、Bは、独立して、文字(ASCIIコード)を表し、
B 1は、第1ビットである場合、第2のビットは0であり、次いで、Bマルチバイト文字に1バイト(非ASCII文字);
最初の2ビットBは、3番目のビットが0で、1である場合、Bは、最初のバイトで表される2バイト文字です。
トップ3つのBが1である場合、4番目のビットが0である、文字Bは、最初のバイトに3バイトであり;
B 1の最初の4ビットは、第5ビットは、その後、B 0の場合文字は最初のバイトに4バイトで表される。
従って、任意のバイトUTF-8符号化は、最初に応じて、かどうかをASCII文字に決定することができる、前2つによれば、単語と判断することができますそれは最初のバイトの文字コードセクションであるかどうか、最初の4つ(最初の2ビットが1であれば)、最初のバイトは、バイト文字コードであると判断してもよいし、いくつかに対応する文字によって決定することができますこれは、バイトを表し、最初の5つの(最初の4ビット1があれば)、符号化データのエラーかどうか、エラーが送信中に存在するか否かが決定されることができます。

GDBは、
最初readelfが、実行可能ファイルの一般的な構造を見てみ爆撃-a使用することができます。主よりも第1指示位置
(GDB)L(IST)(GDB)Bメインブレークポイント(GDB)R&LT継続動作C
逆アセンブルメイン/のMCとASM / Rの参照16進コード16に沿って配置された(GDB)
(GDB)X / 15Iメイン命令は、x / Iが見ることができる
データは16進数の文字列X見ることができる(GDB)X / 15アドレスX / S
(GDB)ディスプレイ/ 10Iメインコマンドを自動的に実行するために約現在のアセンブリ命令を表示する
(GDB)をニッケル、単一のマシン命令実行次のn個のステップCの文(GDB)SI:シングルステップのマシン命令文にシングルステップC
(GDB)は、RIPは$ $ EAX抗ヒトを印刷します!
すべての情報(GDB)情報REGの情報procがすべてこのプロセス参照
次| |(GDB)レイアウト前のページ <layout_name>を変更するには、レイアウトのsrc / ASM /スプリット/ REGS
(GDB)SET-味分解インテル形式にインテル

ELFファイル解析

readelfがヘルプを参照してください

readelfが- H読み取るELFファイルヘッダ解析

readelfが- Sのシンボルテーブル(動的解析シンボル記号)

- X-はバイトを参照してください

- P-探している文字列

readelfが- Aのすべての情報を見て

readelfが<オプション(S)> ELFファイル(複数可)

-h -l -S -s -r -d -V:同時にへ-a -all等価 -A -I
表示-h --fileヘッダELFヘッダ
-l --program-ヘッダショープログラムヘッダ
-S --section-ヘッダー表示部ヘッダ
-t --section-詳細表示部の詳細
-s -symsシンボルテーブル(シンボルテーブル)
-R&LT -relocsリロケーション情報表示
-dynamic表示ダイナミック部(動的sectionTopを)-D
- X --hexダンプ= <数|名>
出力バイト<数|名>の形式で表示されている指定されたセクションの内容
| -p --stringダンプは= <番号名前>
名前|文字列として表示出力<数指定されたセクションの>内容
| -R --relocatedダンプ= <数名>
表示出力<移転の形態におけるバイトの数|名前>指定部

リリース7件のオリジナルの記事 ウォンの賞賛3 ビュー469

おすすめ

転載: blog.csdn.net/qq_39600733/article/details/103938038