問題タブ [strace]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
856 参照

android - これらのsyscall_983045、syscall_322 syscallsがstrace出力で何を呼び出すかを確認するにはどうすればよいですか?

straceログでこれら2つのシステムコールをよく見ました。

それらのシステムコールが何を意味するのかを知るための最良の方法は何ですか?

Linuxカーネルのソースツリーにinclude/linux/syscalls.hを試してみました。しかし、そこには何も見つかりません。

このアンドロイドICSシステム。Linux3.0コード。

0 投票する
3 に答える
3726 参照

iphone - iphone: strace、dtruss、dtrace、または同等のもの?

stracedtruss、またはdtraceiPhone用のようなものがあるかどうか誰か知っていますか?

0 投票する
2 に答える
1231 参照

perl - 実行中のperl/pythonスクリプトが実行している現在のステップを見つける方法は?

私は巨大なPerlスクリプトを持っていますが、それは何度もハングします。それが実行状態にあるとき、私はそれが現在実行しているステップを見つける必要があります。
「Devel::Trace」[コンパイル時エンティティ]は必要ありません。straceのようなものはありますか?スクリプトのpidを渡すと、実行時に何が実行されているかが表示されます。私にお知らせください。

〜マンダー。

0 投票する
2 に答える
1213 参照

process - strace の syscall

私は、 2 つの子プログラムをフォークstraceするいくつかのプログラムを呼び出しました:と.ABC

にはstrace、次のものがありますsyscalls

Aプログラムを C で書き直そうとして3います。彼らが何であるかを知る方法はありますか?私は知っています。4563stderr

0 投票する
7 に答える
32692 参照

linux - Linux でファイルごとの IO 操作をトレースするには?

read特定のファイルのシステム コールを追跡する必要があります。現在、 strace. はファイル記述子で動作するため、 とreadの間の現在のマッピングを追跡する必要がfdありpathます。さらに、seekトレースで現在の位置を最新に保つために監視する必要があります。

Linux でアプリケーションごと、ファイルパスごとの IO トレースを取得するより良い方法はありますか?

0 投票する
0 に答える
196 参照

android - Android: strace を中断する方法

strace を中断して、いくつかのメッセージをキャッチしたいと考えています。それは不可能だと思われますか、それとも私は間違っていますか? いくつかのバインダーを接続して、それらからのメッセージをキャッチすることは可能ですか? それが不可能なら、なぜですか?

0 投票する
2 に答える
2326 参照

c++ - GDB strace は、無効なアドレスで ptrace を試みていることを示しています

gdb のデバッグ中に ni コマンドを実行すると、次のようなエラーが発生しました。

警告:
ブレークポイント 0 を挿入できません
。メモリ アドレス 0x3ac706a へのアクセス中にエラーが発生しました: 入出力エラー。

/lib/libc.so.6 からの siglongjmp () の 0xf6fa4771

gdb が遭遇する問題を調査するために、gdb を strace してそのような出力を取得します。

rt_sigprocmask(SIG_BLOCK、NULL、[RT_1]、8) = 0
ptrace(PTRACE_PEEKTEXT、651、0xcc4fdf60、[0x1cc4fe470]) = 0
ptrace(PTRACE_PEEKTEXT、651、0xcc4fe480、[0x3ac706a4506fa1d]) =
0 ], 8) = 0
…<br> ...
rt_sigprocmask(SIG_BLOCK, NULL, [RT_1], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [RT_1], 8) = 0
ptrace(PTRACE_GETREGS, 27781, 0, 0x7fff8990e8b0 ) = 0
ptrace(PTRACE_PEEKTEXT, 27781, 0x3ac7068, [0x28b]) = -1 EIO (入出力エラー)
ptrace(PTRACE_PEEKTEXT, 27781, 0x3ac7068, [0x28b]) = -1 EIO (入出力エラー)

これは、gdb がメモリ アドレス0xcc4fe480で最初に ptrace を実行し、値0x3ac706a4506fa1d (実際には 8 バイトの値0x03ac706a4506fa1d ) を取得することを意味します。その後、その値の最初の 4 バイトからアラインされたアドレス0x3ac7068を取得します。これは無効なアドレスであり、gdb が ptrace に失敗する原因となります。

/proc/[pid]/maps の内容:

CBCE2000-CC353000 R-XP 00000000 08:03 295479 XXX.SO
CC353000-CC3F0000 R-P 00670000 08:03 295479 XXX.SO
CC3F0000-CC3F6000 RW
P 00:00 0
CC3FE000-CC3FF000 --- P CC3FE000 00:00 0
CC3FF000-CC4FF000 RWXP CC3FF000 00:00 0
CC4FF000-CC500000 --- P

CC4FF000
-xp 00000000 08:03 295545 yyy.so
cc673000-cc674000 ---p 00046000 08:03 295545 yyy.so
cc674000-cc675000 r--p 00046000 08:03 295545 yyy.so
cc675000-cc676000 rw-p 00047000 08:03 295545 yyy.so

アドレス0xcc4fe480が上記の太字のセクションからのものであることを示しています。このセクションは、.so または bin ファイルとは関係ありません。

この質問は、実際には別の質問http://stackoverflow.com/questions/9564417/gdb-cant-insert-internal-breakpointに関連していますが、まだ解決されていません。これらの問題は、前号の調査中に見つかりました。

ここで 3 つの質問があり
ます

最後のパラメーターが角括弧で注釈されているのはなぜですか? 戻り値を表すということですか?マニュアルページには、ptrace は PTRACE_PEEKTEXT に対して読み取った単語を返す必要があると書かれていますが、strace の出力はそれに従っていないように見えるため、最後のパラメーターに戻り値が表示されていると思われます。
2. 2 つの .so の間にセクション (太字の who) がありますが、どの i ノードにも関連付けられていません。そのようなセクションは何を表していますか?
3. Gdb はそのセクションから 1 ワードを読み取り、そのワードをアドレスとして使用しますが、実際には無効なアドレスです。このようなエラーの考えられる原因は何ですか?

ありがとう!

0 投票する
2 に答える
438 参照

c - Ptraceを使用して、引数がシステムコールに対して正確に何を意味するかを調べます

私はすでに次の質問を投稿して解決策を得て、前進
するためにptraceを使用して、システムコールに渡されるすべての引数を見つけています。
プログラムは、ebx、ecx、edxの値を取得しています。今、オープンシステムコールのために私は次のようになりました

SYSCALL 5:ebx:bf9748af ecx:00008000 edx:00000000 / open
SYSCALL 5:ebx:80485b3 ecx:00000242 edx:000001b6 / open

私はstraceを使用しましたが、上記のように魔法のように変換されます。

open( "test.txt"、O_RDONLY | O_LARGEFILE)= 3
open( "test.txt"、O_RDWR | O_CREAT | O_TRUNC、0666)= 3

これを手動で行うにはどうすればよいですか?O_LARGEFILEの値を見つけることができる場所はありますか?
たくさん検索してこれに出くわしました、すべてが揃っているわけではありません。また、straceコードを読み取ろうとしましたが、この変換のコードは見つかりませんでした。
誰かが私を助けてくれるなら、それは私にとって非常に役に立ちます。また、これがstraceのどこに書かれているのかを知っているなら、私はそれを覗き見したいと思います。前もって感謝します。

0 投票する
1 に答える
1547 参照

c - strace はシステムコール sys_open のファイル名をどのように読み取るのですか?

Ptrace を使用して次のことを行うプログラムを作成しています。

  • 現在の eax を読み取り、システム コールが sys_open かどうかをチェックします。
  • もしそうなら、渡された引数が何であるかを知る必要があります。

    int sys_open(const char * filename, const int mode, const int mask)

したがって、eax = 5 は、それがオープン システム コールであることを意味します。この質問
から、ebx がファイルの場所のアドレスを持っていることがわかり ました。同じ質問 1質問 2 に対処する次の質問に出くわしました(これは私だけのものです!) しかし、それでも問題の解決策が得られませんでした。:(両方の答えが明確ではなかったので。質問1のアプローチを試してみると、まだセグメンテーション違反が発生しています。ここで 私のコードを確認できます 。