問題タブ [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.
io-redirection - ファイルにリダイレクトされた strace tmux 出力
起動時にどのファイルが tmux に触れるかを確認したい (tmux の実行時に開いているファイルのリストだけではない)。Strace tmux が最良の選択肢のように思えました。
出力をファイルにリダイレクトしようとしたときstrace tmux > /tmp/blah
。ファイルが空です。
なぜこれが起こるのですか?トレースをファイルにリダイレクトする方法は?
c - 2 つの同時送信は両方のプログラムをロックします
私は自分のアプリケーションをデバッグしています (以前の質問へのフォローアップのようなものです)。これは本質的におもちゃのピア ツー ピア クライアントです。次のように機能します。
- ピア 1 はピア 2 からのブロック (または複数のブロック) を要求します
- ピア 2 は要求を受信し、ブロックを送り返します
そして、そのサイクルは多かれ少なかれ繰り返されます。これは小さなファイルにはうまく機能しますが、より多くのチャンク (たとえば 512 バイトの 250 チャンク) に分割する必要があるファイルでは機能しなくなります。
ピア 2 (リクエストを受信するもの) で strace を実行すると、次のようになります。
ピア 1 (リクエストを送信するもの) での strace の結果は次のようになります。
送信を行うと、両方とも死にます。理由はよくわかりません。誰かがこれに光を当てることができれば、本当に感謝しています!
linux - ポーリング システム コールのタイムアウト
添付strace
すると、これらのメッセージがたくさん表示されます。
poll
システムコールがタイムアウトする原因となっている、プログラムがアクセスしようとしているファイルを見つけるにはどうすればよいですか?
strace
デバッグを困難にする多くのメッセージを生成します
macos - コマンド ライン ツールを使用して、OSX でプロセスをブロックしているものを特定しますか?
タイトルはそれを最もよく表しています。Linux では、 and おそらくorで簡単に実行できます。また、OSX Leopard から が削除されるまで、OSX では簡単でした。また、基盤となるシステム コール (afaik) も同様です。strace
lsof
/proc
truss
明らかなアプローチは でこの問題に取り組むことですが、悲しいことにdtrace
、イベントが発生したときにイベントをキャッチするため、私が理解している限りでdtrace
はうまくいきません。私の場合、ブロッキングシステムコールはすでに開始されています。ちなみに、これが解決できる場合は、修正したいと思いますdtrace
。
XcodeのInstrumentsには、プロセスのスタックの定期的なサンプルを取得することで同様のことを実現するモニターがあることがわかりました(それを行うためにどのシステムコールが依存しているかはわかりません!)、おそらくコマンドラインで同様のもので十分です(システム コールをラップするライブラリ コールまでのスタックを表示します)。私のユースケースに役立つように、この「サンプリングコマンドラインツール」は、スタック上で見つかった引数を見つけて解析し、ブロックされているファイル/ファイル記述子を特定するのに役立つ必要があります。
最後にもう 1 つ - Linux では、通常、通常のユーザーとしてこれを行うことができます (ptrace_scope
トリックがない場合)。OSX ソリューションが root を必要としないのも素晴らしいことです。
c - プロセスの実行環境について
2 つの異なるコンテキストでのプロセスの「実行環境」の違いを知るにはどうすればよいですか?
質問を適切に表現するために、私は plan9port をインストールして/opt/plan9/
おり、そこから fortune プログラムを実行すると正常に動作し/opt/plan9/bin/fortune
ます。/opt/plan9/lib/fortune
(とから運勢のリストを読み取ります/opt/plan9/lib/fortune.index
)。ACコード(test.c)の内部から呼び出すと
おみくじは読まない。strace を使用して、これら 2 つのバイナリを呼び出したときの違いを確認しました。
strace -f -eopen ./test
デフォルトのメッセージ「不幸」を出します。
strace -f -eopen fortune
これは完全に正常に機能します。
./test read fortunes ファイルを変更するにはどうすればよいですか。バイナリがライブラリを読み取る場所から、実行環境と関係がある必要があります。
python - strace 出力処理
私はこのようにstraceを使用しています:
次に、sedで明確なファイルリストを取得しています:
出力例があります:
私の問題は、フルネーム以外のエントリ (「util.c」や「./util_cfgtree.h」など) です。strace 出力でフルネームを取得する方法はありますか?
私はこのスクリプトを書きました:
しかし、Python に関する私の知識は非常に貧弱です。
間違いや悪い解決策はありますか?
android - strace の Android アプリ
私は Android タブレットを使用しており、ランダムな再起動を引き起こしているアプリをデバッグしようとしています。
strace
バックグラウンドまたは同等の機能を実行するためにインストールできるアプリはありますか? これは通常どのように処理されますか。
常に実行され、システム イベントをログに記録するアプリがあるかどうかを確認しています。
ご清聴ありがとうございました。
linux - LinuxでNSSモジュールを.so.2で終了する必要があるのはなぜですか?
RedHatLinux用のネームサービススイッチモジュールを作成しました。
.so.2
straceを使用して、OSがさまざまなディレクトリでライブラリを検索することを決定しましたが、拡張子が(たとえば、サービス名はlibnss_xxx.so.2
どこですか)のファイルのみを検索します。xxx
なぜそれは.so
または.so.1
ライブラリを探しないのですか?.so.2
将来、図書館を探すのをやめず、図書館を探し始めるという保証はあり.so.3
ますか?
編集:http2
://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.htmlは、 「インターフェイスが変更されるたびにインクリメントされるバージョン番号」であると述べています。だから私はそれを推測します:
- NSSのバージョンには、バージョン2のライブラリが必要です。
- 更新されたNSSを使用したOSの更新では、異なるバージョン番号が必要になる場合があります。
誰かがそれが本当かどうか確認できますか?
qt - Qtプログラムの環境
Qt実行可能ファイルがあります。このプログラムをUbuntu11.04仮想マシンで実行すると、GUIは見苦しくなりますが、それでも必要なGUIであることがわかります。ただし、私のラップトップのUbuntu 12.04で実行すると、すべてがうまくいきます。したがって、仮想マシンの環境に問題があるのではないかと思います。
問題がライブラリにあるかどうかを確認するために、コマンドを実行しました
私は次のようにライブラリの依存関係を取得しました:
それでは、どうして違うのだろうか。straceなどのツールで何が問題になっているのかを知ることはできますか?
hook - LD_PRELOADとstraceの違いは何ですか?
どちらのメソッドも、システムコールとパラメーターおよびそれらの戻り値を収集するために使用されます。私たちが好むときLD_PRELOAD
とその理由は?たぶん、私たちは経由でのみシステムコールを収集できると言うことができますが、トリックstrace
でライブラリコールを収集することができます。LD_PRELOAD
ただし、名前が。であるライブラリ用の別のトレーサーがありltrace
ます。