問題タブ [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.
android - これらのsyscall_983045、syscall_322 syscallsがstrace出力で何を呼び出すかを確認するにはどうすればよいですか?
straceログでこれら2つのシステムコールをよく見ました。
それらのシステムコールが何を意味するのかを知るための最良の方法は何ですか?
Linuxカーネルのソースツリーにinclude/linux/syscalls.hを試してみました。しかし、そこには何も見つかりません。
このアンドロイドICSシステム。Linux3.0コード。
iphone - iphone: strace、dtruss、dtrace、または同等のもの?
strace
、dtruss
、またはdtrace
iPhone用のようなものがあるかどうか誰か知っていますか?
perl - 実行中のperl/pythonスクリプトが実行している現在のステップを見つける方法は?
私は巨大なPerlスクリプトを持っていますが、それは何度もハングします。それが実行状態にあるとき、私はそれが現在実行しているステップを見つける必要があります。
「Devel::Trace」[コンパイル時エンティティ]は必要ありません。straceのようなものはありますか?スクリプトのpidを渡すと、実行時に何が実行されているかが表示されます。私にお知らせください。
〜マンダー。
process - strace の syscall
私は、 2 つの子プログラムをフォークstrace
するいくつかのプログラムを呼び出しました:と.A
B
C
にはstrace
、次のものがありますsyscalls
。
A
プログラムを C で書き直そうとして3
います。彼らが何であるかを知る方法はありますか?私は知っています。4
5
6
3
stderr
linux - Linux でファイルごとの IO 操作をトレースするには?
read
特定のファイルのシステム コールを追跡する必要があります。現在、 strace
. はファイル記述子で動作するため、 とread
の間の現在のマッピングを追跡する必要がfd
ありpath
ます。さらに、seek
トレースで現在の位置を最新に保つために監視する必要があります。
Linux でアプリケーションごと、ファイルパスごとの IO トレースを取得するより良い方法はありますか?
android - Android: strace を中断する方法
strace を中断して、いくつかのメッセージをキャッチしたいと考えています。それは不可能だと思われますか、それとも私は間違っていますか? いくつかのバインダーを接続して、それらからのメッセージをキャッチすることは可能ですか? それが不可能なら、なぜですか?
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 ワードを読み取り、そのワードをアドレスとして使用しますが、実際には無効なアドレスです。このようなエラーの考えられる原因は何ですか?
ありがとう!
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のどこに書かれているのかを知っているなら、私はそれを覗き見したいと思います。前もって感謝します。
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のアプローチを試してみると、まだセグメンテーション違反が発生しています。ここで
私のコードを確認できます
。