strace

ソフトウェアのスクリーンショット:
strace
ソフトウェアの詳細:
バージョン: 4.19 更新
日付のアップロード: 23 Nov 17
ライセンス: 無料
人気: 23

Rating: 5.0/5 (Total Votes: 1)

straceは、Cで実装され、GNU / Linuxオペレーティングシステムでのみ動作するように設計されたシステムコールトレーサを提供する、開発者やシステム管理者向けのオープンソースで自由に配布されるソフトウェアです。

このプログラムは、プログラムやプロセスによって生成されたすべてのシステムコールを収集し、トレースを出力する、非常に便利なデバッグ、指導、診断ユーティリティです。それはコンソール環境や端末エミュレータアプリケーションからしか使えないコマンドラインプログラムです。

このツールは、診断者、トラブルシューティング者、クローズドソースプログラムの問題を解決するための貴重なソリューションを必要とするシステム管理者が使用できます。 Dmitry V. Levin、Roland McGrath、Wichert Akkermanによって書かれています。


コマンドラインオプション

他のコマンドラインソフトウェアと同様に、straceはさまざまなコマンドラインオプションを提供しています。これにより、ユーザーはすべての機能と機能を簡単に使用してタスクを達成できます。すべてのコマンドラインオプションは、‘ strace --help’コマンドを実行することによって一目で見ることができます。コマンド。

最も興味深いコマンドラインオプションのうち、各システムコールの時間、コール、エラーのカウント、システムコールレイテンシの要約のサポート、特定のパスへのアクセスのトレースのサポート、デバッグ出力の標準エラー出力のサポート、親としてではなく独立した孫としてのトレーサプロセスの実行をサポートしています。

さらに、stderrの代わりに特定のファイルにトレース情報を送信したり、syscallのオーバーヘッドをオーバーヘッドusecに設定したり、トレースプロセスのPIDファイルを設定したり、印刷文字列の長さを制限することができます文字列をstrsizeし、setgidやsetuidを扱うユーザ名としてコマンドを実行したり、特定のシステムコールをデタッチすることができます。


straceの使い方

straceはソースtarballとしてのみ配布されていますが、主なソフトウェアリポジトリから多数のLinuxディストリビューションに簡単にインストールできます。ソースからインストールするには、Softowareから最新バージョンをダウンロードし、任意の場所にアーカイブを保存して解凍します。

ターミナルアプリケーションを開き、展開されたアーカイブファイルの場所(例:cd /home/softoware/strace-4.9)に移動し、./configure && make’を実行します。 straceの設定とコンパイルのコマンドを実行し、‘ make install’を実行します。 rootとしてコマンドを実行するか、sudo make install’

このリリースの新機能:

改善点:
ソケット記述子に関連するプロトコルとアドレス情報を出力する-yyオプションが追加されました。
拡張された "-e read = set" "-e write = set" sendmsg、recvmsg、sendmmsg、およびrecvmmsgの各システムコールをカバーするオプション。
ioctlコマンドの完全な32ビットデコードを実装しました(Debianバグ#692913とFedoraバグ#902788)。
ia64でPTRACE_GETREGS APIサポートを実装しました。
MipsでPTRACE_GETREGS APIサポートを実装しました。
s390 / s390xでPTRACE_GETREGSET APIサポートを実装しました。
getrandomとseccompのシステムコールのデコードを実装しました。
64ビット機能セットの完全なデコードを実装しました。
すべてのprctlコマンドのデコードを実装しました。
パラメータ化されたioctlコマンドのデコードを実装しました。
evdev ioctlコマンドのデコードを実装しました。
v4l ioctlコマンドのデコードを実装しました。
SG_IO v4 ioctlコマンドのデコードを実装しました。
FIFREEZE / FITHAW / FITRIM ioctlコマンドのデコードを実装しました。
FALLOC_FL_ * fallocateフラグのデコードを実装しました。
aarch64、x32、およびx86_64にrt_sigreturn信号マスクのデコードを実装しました。
ブルートゥースソケットをサポートする拡張ソケットデコーダ。

リストされていないioctlコマンドのデコードが強化されました。
getsockoptとsetsockopt syscallの拡張されたデコード。
sysinfoシステムコールの拡張されたデコード。
struct cmsghdrの拡張されたデコード。
待機状態の拡張されたデコード。
外部libaio.hを使用することにより、非x86アーキテクチャでの拡張aioサポート
認識されたオープン・モード・フラグのリストにO_TMPFILEを追加しました。
statfsファミリーのシステムコールの解読に使用されるファイルシステムのタイプ定数のリストを更新しました。
CAP_ *、PR_ *、PTRACE_ *、SCHED_ *、SO_ *、SOL_ *、SWAP_FLAG_ *、およびTFD_ *定数のリストが更新されました。
Linux 3.19からのシグナル定数のリストを更新しました。
Linux 3.19からのerrno定数のリストを更新しました。
Linux 3.9からのioctlコマンドのリストが更新されました。
Linux 3.19にマッチする新しいsyscallエントリを追加しました。
バグの修正:
syscallの数とsyscallの引数の数、syscallの名前、syscallのデコーダのような関連情報の間のマッピングにおける様々なエラーを修正しました。
記述子、ファイル名、ネットワークインタフェース名、構造体utsnameメンバー、BLK * ioctlコマンドのデバイス/ボリューム名の印刷で引用符を修正しました。
uid_t / git_tのデコードを修正しました。getdents / getdents64デコーダの潜在的な境界外読み出し問題を修正しました。
いくつかのアーキテクチャでオープンフラグが切り詰められる可能性を修正しました。
struct ifreq.ifr_nameのデコードを修正しました。
SIOCSIFNAME ioctlコマンドのデコードを修正しました。
RENAME_ * renameat2フラグのデコードを修正しました。
UTIME_NOW / UTIME_OMITの時間構造のデコードを修正しました。
いくつかのアーキテクチャで間接的なipcサブコールのデコードが修正されました。
32ビットアーキテクチャでのfanotify_markシステムコールのデコードを修正しました。
64ビットアーキテクチャ上の32ビットstat構造の修正されたデコード。
64ビットアーキテクチャでの32ビット構造体cmsghdrの固定のデコード。
64ビットアーキテクチャ上の32ビットpreadv / pwritevオフセットの固定デコード。
ia64、ppc、ppc64、sparc、sparc64、mips、およびs390のsigreturn / rt_sigreturn信号マスクのデコードを修正しました。
いくつかのパーソナリティをサポートするアーキテクチャ上の命令ポインタ固定出力(-iオプション)。
"-e read = set"の固定動作"-e write = set"読み書きセットが交差するとき。
struct sigactionにsa_restorerメンバーがないシステムでのビルドを修正しました。
uclibcとmusl libcでビルドを修正しました。
移植性:

Linuxカーネル> = 2.5.46が必要です。まともなPTRACE_SETOPTIONSサポートのない古いバージョンは動作しません。
mipsでは、Linuxカーネル> = 2.6.15が必要です。適切なPTRACE_GETREGSサポートのない古いバージョンは動作しません。
s390およびs390xでは、Linuxカーネル> = 2.6.27が必要です。適切なPTRACE_GETREGSETサポートのない古いバージョンは動作しません。

バージョン4.9の新機能:

行動の変化:
デフォルトでARM EABIシステムでのOABIサポートを無効にし、設定時に有効にする--enable-arm-oabiオプションを追加しました。
改善点:
トレースされた各システムコールの後にスタックトレースを出力する実験的な-kオプションが追加されました。
syscallの待ち時間に関する統計情報を生成する-wオプションが追加されました。 (Debianバグ#457497に対処しています)。
ARCアーキテクチャのサポートが追加されました。
PowerPCにPTRACE_GETREGS APIサポートを追加しました。
強化されたBionic libcおよびmusl libcサポート。
x86_64およびx32でのx86パーソナリティプロセスの強化されたトレース
AArch64上のARMパーソナリティプロセスのトレース強化。
PowerPC上で強化された32/64ビットパーソナリティ検出。
add_key、ioprio_get、ioprio_set、kexec_load、keyctl、renameat2、およびrequest_keyの各システムコールのデコードを実装しました。
select、pselect、io_submitの各システムコールを強力にデコードします。
delete_module、fanotify_init、fanotify_mark、fcntl、setdomainname、sethostname、setns、およびsync_file_rangeシステムコールのデコードが強化されました。
信号ビットマスクのデコードが強化されました。
ファイル記述子の拡張されたデコード。
拡張されたsiginfo_tデコード。
強化されたPF_NETLINKデコード。

更新されたCLOCK_ *定数(Fedoraバグ#1088455に対処)。
Linux 3.16にマッチする新しいsyscallエントリを追加しました。
バグの修正:
shmatとshmdtをメモリマッピングに関連するシステムコールのセットに追加しました。
停止したプロセスからの切り離しを修正しました。
32ビットアーキテクチャでのfanotify_markのデコードを修正。
preadvとpwritevのシステムコールでの固定オフセットデコード。
_FORTIFY_SOURCEモードでglibcの選択デコードを修正しました。
epoll_ctl syscallのEPOLL_CTL_DEL引数によるデコードを修正しました。
whenとconflictを修正しました(Fedoraバグ#993384)。
マニュアルページのその他の修正。 (Debianバグ#725987に対処してください)。

バージョン4.8の新機能:

行動の変化:
通常のstrace終了の場合、トレース出力がパイプにリダイレクトされると、straceはこれを閉じて終了する前にパイププロセスの終了を待ちます。
改善点:
PTRACE_SEIZE API(使用可能な場合)を使用してトレースを実装しました。
x86-64およびx32(利用可能な場合)でより信頼性の高いPTRACE_GETREGSETベースのプロセスパーソナリティ検出を実装しました。
メモリマップ関連のシステムコールをトレースするための-e trace = memoryオプションが追加されました。
文書化-bオプション。
許可された終了状態メッセージは、-qオプションを2度与えることによって抑制されます。
AArch64アーキテクチャのサポートを追加しました(Debianバグ#693074、Fedoraバグ#969858)。
OpenRISC 1000、Meta、Xtensaアーキテクチャのサポートが追加されました。
Tileのtilegxパーソナリティサポートを追加しました。
NOMMUアーキテクチャのサポート強化。
getdents、mmap、perf_event_open、ptrace、およびquotactl syscallsの拡張されたデコード。
Linux 3.9にマッチする新しいsyscallエントリを追加しました。
Linux 3.9からの一般的なioctl名のリストを再生成しました。
errno定数のリストを更新しました。
AF_ *、MADV_ *、MAP_ *、MSG_ *、MS_ *、PF_ *、PR_ *、PTRACE_O_ *、およびTCP_ *定数の更新されたリスト。

UBI ioctlのデコードを実装しました。
削除された冗長な "* 32" ioctlの名前。
バグの修正:
ERESTARTNOINTRが古代のカーネルのユーザー空間に漏れてしまう問題を修正しました(Fedora bug#659382)。
修正されたカーネルリリース文字列解析(Debianバグ#702309に対処)。
* xattrのシステムコールを修正しました(Fedora bug#885233)。
32ビットstraceによる64ビットのiノード番号によるファイルの処理が修正されました(Fedoraバグ#912790)。
SPARC上のトレースフォークを修正しました。
fadvise64、fallocate、ftruncate64、io_submit、pread、preadv、pwrite、pwritev、readahead、sigaltstack、sync_file_range、sysctl、およびtruncate64のシステムコールを修正しました。
サポートされているアーキテクチャのほとんどで、複数のシステムコールのカテゴリを修正しました。
非ネイティブ32ビットパーソナリティrecv [m] msg syscallsの固定のデコード。
x32の複数の32ビットパーソナリティsyscallsのデコードを修正しました。
ARM、MIPS / o32、PowerPC、S390x、およびTileアーキテクチャで長いlong syscall引数のデコードを修正しました。
S390xでのsemtimedopのデコードを修正しました。
Blackfinでのsram_allocデコードを修正。
process_vm_readvがスタブである場合のビルドを修正しました。
libaio.hの古いバージョンでビルドが修正されました。

バージョン4.7の新機能:

これは安定したリリースで、通常のバグ修正、新しいLinuxカーネルのサポート強化などの改良が施されています。

バージョン4.6の新機能:

通常のバグ修正、新しいLinuxカーネルのサポート強化など、 fork、vfork syscallを使用して、スレッドと子プロセスの作成をトレースするためのLinuxカーネルの明示的な機能を使用します。

バージョン4.5.20の新機能:

改善点:
新しいlinux syscallsのデコードを実装しました:inotify_init1、recvmmsg。
新しいlinuxシステムコールの基本的なデコードを実装しました:preadv、pwritev、rt_tgsigqueueinfo、perf_event_open
裸のデコーダを、x86 / x86-64用に以前より有効になった精巧なパーサーに置き換えることによって、非x86アーキテクチャで最近追加されたsyscallsの拡張されたデコード。
regularオプションと-cオプションを組み合わせる-Cオプションを実装しました。 (Debianバグ#466196に対処してください)
mbindとmremapのシステムコールの拡張されたデコード。
強化されたSOL_PACKETソケットオプションのデコード。
linux 2.6.33からのioctl名のリストを再生成しました。
TILEアーキテクチャのサポートが追加されました。
バグの修正:
Linuxカーネルヘッダー2.6.32-rc5 +で修正されたビルド。 (Debianのバグ#560516とFedoraのバグ#539044)
mipsのビルドを修正しました。
struct statfs64を使用しないLinuxシステムの処理を修正しました。
powerpcでsigreturnによるレポートシグナルマスクを修正しました。
選択デコーダにおける潜在的なスタックバッファオーバーフローを修正しました。 (アドレスFedoraバグ#556678)
msgsnd間接ipccallのデコードを修正しました。
64ビットシステムコールのデコードを修正しました。 (Debianのバグ#570603)


sizeof(long)> sizeof(int) (Debianのバグ#494844を解決)
epoll_pwaitのデコードを修正しました。 (Debianのバグ#513014を解決)
死んだスレッドの処理を修正しました。

同じようなソフトウェア

rpdb
rpdb

14 Apr 15

pyrasite
pyrasite

14 Apr 15

へのコメント strace

コメントが見つかりません
コメントを追加
画像をオンにする!