Systrace for Windows


85

Systraceまたは少なくともstraceに相当するWindowsを探しています。私はStraceNTを知って いますが、他に選択肢があるかどうか疑問に思っています。具体的には、システムコールポリシーをプログラムで適用する特定の方法を探していますが、これは積極的に停止するのではなく、事後に行うことができます。

現在これを行う良い方法はありますか?


回答:


26

WinDbgのLogger.exeはstraceに最も近いものです:http://msdn.microsoft.com/en-us/library/windows/hardware/ff552060(v = vs.85).aspx

編集:windbgのwtもあります:http//blogs.msdn.com/b/debuggingtoolbox/archive/2009/10/12/special-command-tracing-applications-using-wt.aspx


3
ただし、syscallではなくライブラリ呼び出しをキャプチャするため、straceというよりはltraceに似ています。
マイケル

@BrunoMartinez:straceを使用するためにメモリアドレスを指定する必要はありません。
user2284570 2016年

38

いくつかのオプション:

プロセスモニター

また、Windows7に組み込まれているツールに関する次の記事も参照してください。

コアOSツール


3
ProcessMonitorを使用して、プロセスがハングしている理由を調べました。削除できないファイルにアクセスしようとしていたことがわかりました。ProcMonがなければ理解できなかったでしょう
Jamie Cook

2
私はLinuxでstraceをかなり使用しており、NANTで発生していた問題のトラブルシューティングを行うために、Windowsで同様のツールを探しているときにこの質問に遭遇しました。Process Monitorを試し、Nant.exeのみを含めて他のすべてを除外するようにフィルターを設定し、問題が発生した場合にのみレジスタアクセス用のフィルターを設定し、問題が発生していることをすばやく把握しました。プロセスモニターを強くお勧めします。
hshib 2013

@ djhaskin987:私の場合、いくつかのファイルをロードするプログラムがあります。それらをʀᴀᴍにバッファリングして(ハンドルが残っていないので)、クラッシュします。ハンドルが残っていないので、プロセスモニターは役に立ちません。
user2284570 2016年

@hshib:プロセスモニターの問題は、プロセスがファイルにアクセスするためにハンドルを必要としないことです。したがって、私のような場合(どの構成ファイルがクラッシュを引き起こすかを確認しようとする)、それは役に立ちません。
user2284570 2016年

15

Dr. Memory(http://drmemory.org)ツールには、drstraceと呼ばれるシステムコールトレースツールが付属しています。このツールは、ターゲットアプリケーションによって行われたすべてのシステムコールとその引数を一覧表示します。http://drmemory.org/strace_for_windows.html

プログラムでシステムコールポリシーを適用するには、drstraceと同じ基盤となるエンジンを使用できます。DynamoRIOツールプラットフォーム(http://dynamorio.org)とDrSyscallシステムコール監視ライブラリ(http://drmemory.org/docs/page_drsyscall)です。 html)。これらは動的バイナリ変換テクノロジーを使用しており、オーバーヘッドが発生します(定常状態では20%〜30%ですが、大きなデスクトップアプリの起動などの新しいコードを実行するとはるかに高くなります)。これは目的に適している場合とそうでない場合があります。


11

APIモニターは、この目的に非常に役立つように見えます


これは優れたプログラムであり、詳細な関数パラメータ/戻り値を表示し、特定の条件が満たされたときにブレークポイントを設定できるようにします。さまざまなフック方法を使用できるため、検査を望まない多くのプロセスで使用できます。
yuikonnu 2017年

6

これはかなり興味深い記事です。あなたが探しているターゲットにヒットするかどうかはわかりませんが、あなたが望む方向にあなたを導くことができると思います。

http://jbremer.org/intercepting-system-calls-on-x86_64-windows/


1
ありがとう、それはかなり良いです。私は...それは、我々はまだWindows上でいいと機能straceのオフ長い道のりだ意味を推測
static_rtti

3

straceは、cygwinパッケージのCygwinから入手できますCygwinミラーからダウンロードできます。例:

http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz
#      |                      |                              |     |
#      +-----------+----------+                              +--+--+
#                  |                                            |
#               mirror                                       version

straceはCygwinDLLに依存しない数少ないCygwinプログラムの1つであるため、必要なstrace.exe場所にコピーして使用できるはずです。


6
それは良いことですが、他のcygwinプログラムでしか機能しないようです。できませんstrace notepad。メモ帳を起動しますが、システムコールはキャプチャしません。
Michael Fox

2
@MichaelFox:はい、cygwin1.dllへの呼び出しのみをキャッチします。
user2284570 2016年

2

Xperfを中心に構築されたツールがいくつかあります。かなり複雑ですが、非常に強力です。クイックスタートガイドを参照してくださいWindowsパフォーマンス分析ページには他にも役立つリソースがあります


4
straceはパフォーマンスとは無関係です。プロセスが行うシステムコールを出力するだけです。パフォーマンスツールはそれをしていないようです。
Jan Hudec 2012年

1

Michael FoxMentionが複雑な/ Windowsソフトウェアには役に立たない可能性があるため、straceGitによってサポートされています。


0

MarkRussinovichによって作成されたプロセスモニターを使用できます。これは、システム上で実行中のプロセスに接続して、そのプロセスが現在行っているすべてのシステムコールを確認できる、すばらしい小さなアプリケーションです。

https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx


2
djhaskin987は、以前の回答ですでにProcessMonitorについて言及しています。あなたは彼の答えを編集し、それにあなたの説明を編集するべきです。
unforgettableidSupportsMonica 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.