Linuxでは、強力なデバッグツールstraceの

straceのは何ですか

straceのは、Linux環境でのデバッグツールです使用しているアプリケーションを監視するシステムのために呼び出します。
straceのツールは、単純な追跡システムコールの実行です。最も単純な形式では、実行バイナリを最初から最後まで追跡することができ、プロセスのライフサイクルにおけるシステムコール、各システムコールと戻り値のためのテキスト・パラメータの行の名前の列を出力します。

straceのは、2つの動作モードがある
straceのと、元のコマンドの前に、あなたが追跡したいプロセスを開始します:straceのLSを-lhは/ var / log /のcron
II:プロセスがすでにプロセスを中断することなく、実行されているトラッキング実行された場合、それはやって参照してください。straceの-p 28397:へのpidオプション-p straceのを渡すには

一般的なオプションのstarce
、各システムコールのためにエラーの数や頻度を-c統計を行った。時間を
-d straceの出力を標準エラーデバッグ情報に。
子プロセスがフォークによって生成された呼び出しをトレース-f。
-FF場合適切なfilename.pidに出力内のすべてのプロセスの結果を追跡し、-oファイル名を提供し、PIDは各プロセスのプロセスIDである。
-F呼び出しのvfork追跡しようとする。-fは、追跡されないのvfork。
-h出力ブリーフ情報ヘルプ
エントリポインタ-i出力システムコール。
-qは、上のメッセージの出力を無効にする。
-R&LT ,,各システムコールの相対的な時間に印刷。
出力の各ラインの時間情報を追加する前に-t。
-時間情報マイクロ秒を加算した出力の各行の前にTT。
-tttマイクロ秒の出力、秒単位の時間を表すが。
-Tコールごとに消費される時間を表示します。
-vすべてのシステムの出力は、いくつかの。呼び出します頻繁な使用に、デフォルトでは出力されていない環境変数、ステータス、入力および出力の呼び出しでのコール。
バージョン情報-V straceの出力。
16進形式の非標準文字列で-x出力
16進数ですべての文字列-XX出力の形式で。
-a列は、バックセット バック位置の出力値。デフォルトは40です。

-e exprは:.次の形式を追跡する方法を制御するために、式を指定し
、[!] ... VALUE1 [、値2]を[=の修飾子を]
のみトレース、略語、冗長、生、上の修飾子信号を、読み取り、書き込みしました1は.VALUE記号や数字修飾子を定義するために使用されるデフォルトのトレース感嘆符で、例えば、負である:...
トレースを-eする-eopen同等=オープン、オープンは唯一の呼び出しがオープン-etrace =を表すトレースことを示しています。!他の呼び出しを追跡に加えて、開いている。二つの特別な記号すべてとなしがあります。
あなたは\\を使用したいので、いくつかのシェルは、歴史の中でコマンドを実行する!使用していることに注意してください。
-e = SETトレースは
、必ず指定の追跡システムコール。例えば:-eトレース=オープン、クローズ、 reanは、書き込みは、 トレーシングシステムはSETのすべてが.. =唯一の4つのデフォルトを呼び出すことを示している
トレース-e =ファイルは
。操作のみをファイルに関連のシステムコールをトレース
トレースを-e =プロセスが
唯一の情報を追跡しますプロセス制御システムコール。
トレース=ネットワーク-e
ネットワーク関連のすべてのコールのトラッキングシステムを。
-e straceの=信号
トラックすべてのシステム関連信号システム・コール
= IPCトレース-e
コール通信システムに関連するすべてのプロセスのキープトラック
-e略語=組
のシステムコールの設定straceの出力結果セット 。-Vなど略称=なし。デフォルトでは、すべての略語=です。
-e生=セット
システムコールの指定されたパラメータを16進表示
-e信号=セットは
全てに、信号=!SIGIO(又は信号を=!IO)信号追跡システムのデフォルトを指定し、痕跡を示しません。SIGIO信号
=組読み取る-e
:.例えば、指定されたファイルから読み出したデータを出力
= 3,5読み取る-e
-e = SET書き込み
指定されたファイルに書き込まれた出力データを。

-o filenameは、
ファイルfilenameに書き込まれた出力straceのだろう
のpid -p
指定されたプロセスpidを追跡する。
strsize -s
文字列指定された出力の最大の長さを。デフォルトはファイル名がフル出力された32です。
-uユーザ名
、ユーザ名とUIDとをGIDは、追跡されたコマンドを実行します

簡単な説明のstraceの出力部
はexecve( "./主"、[ "./main"]、[/ * 43 VARS * /])= 0
コマンドラインはexecve(EXECまたは呼び出しの一連を実行するプログラムa)第一のstraceの出力システムコールです。
straceのは、まず(ここでは./main)子で実行されるのexecロードされたプログラムを呼び出し、新しい子プロセスを作成するために、フォークまたはクローン関数を呼び出します

BRK(0)= 0x9ac4000
呼び出しパラメータとして0 BRKと(開始アドレスからプロセス内の子は、空間0x9ac4000を割り当てた場合のmallocコール)メモリ管理の開始アドレス値を返します

アクセス(の"/ etc / ld.so.nohwcap" 、F_OK)= -1 ENOENT(そのようなファイルまたはディレクトリ)が
あり/etc/ld.so.nohwcapかどうかをアクセス機能チェックを呼び出します

mmap2(NULL、8192、PROT_READ | PROT_WRITE、MAP_PRIVATE | MAP_ANONYMOUS、-1、0)= 0xb7739000
開始アドレス0xb7739000ある、8192bytesメモリ空間を得るために、mmap2匿名のメモリマッピング機能を使用して

オープン(の「/ etc / ld.so.cache」 、O_RDONLY)= 3は
、ファイルを開こうとする/etc/ld.so.cacheオープン関数を呼び出し、ファイルディスクリプタを返す3

fstat64(3、= {st_modeのS_IFREG | 0644、st_size = 80682、...})= 0
fstat64する/etc/ld.so.cache情報取得機能

mmap2(NULL、80682、PROT_READ、 MAP_PRIVATE、3、0)= 0xb7725000
コールmmap2機能マップメモリファイル/etc/ld.so.cacheへ

閉じる(3)= 0
閉じる閉じるファイルディスクリプタファイル3点/etc/ld.so.cache

オープン( "/ libに/ I386-のLinux GNU / libc.so.6と"、O_RDONLYの)。3 =
読む(3、「\ 177ELF \ 1 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0 0 \ 0 \ 0 \ 0004 \ 1 \ 220o \ \ 3 \ 0 \ 1 \ 0 \ 0 \ 0」...、512)= 512の
呼を読み出し、/ LIB / i386-からLinuxベースGNUリード512バイト/ libcのライブラリファイルlibc.so.6と、すなわち、ヘッダ情報が読み出され、ELF

MPROTECT(0x6c7000、4096、PROT_NONE) = 0
4096bytes保護空間を開始MPROTECT機能0x6c7000を用いては、(PROT_NONEページはアクセスがないことを意味し、PROT_READ読み取り表します。)

おすすめ

転載: www.linuxidc.com/Linux/2019-08/160025.htm