問題タブ [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 投票する
2 に答える
13084 参照

io-redirection - ファイルにリダイレクトされた strace tmux 出力

起動時にどのファイルが tmux に触れるかを確認したい (tmux の実行時に開いているファイルのリストだけではない)。Strace tmux が最良の選択肢のように思えました。

出力をファイルにリダイレクトしようとしたときstrace tmux > /tmp/blah。ファイルが空です。

なぜこれが起こるのですか?トレースをファイルにリダイレクトする方法は?

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

c - 2 つの同時送信は両方のプログラムをロックします

私は自分のアプリケーションをデバッグしています (以前の質問へのフォローアップのようなものです)。これは本質的におもちゃのピア ツー ピア クライアントです。次のように機能します。

  • ピア 1 はピア 2 からのブロック (または複数のブロック) を要求します
  • ピア 2 は要求を受信し、ブロックを送り返します

そして、そのサイクルは多かれ少なかれ繰り返されます。これは小さなファイルにはうまく機能しますが、より多くのチャンク (たとえば 512 バイトの 250 チャンク) に分割する必要があるファイルでは機能しなくなります。

ピア 2 (リクエストを受信するもの) で strace を実行すると、次のようになります。

ピア 1 (リクエストを送信するもの) での strace の結果は次のようになります。

送信を行うと、両方とも死にます。理由はよくわかりません。誰かがこれに光を当てることができれば、本当に感謝しています!

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

linux - ポーリング システム コールのタイムアウト

添付straceすると、これらのメッセージがたくさん表示されます。

pollシステムコールがタイムアウトする原因となっている、プログラムがアクセスしようとしているファイルを見つけるにはどうすればよいですか?

straceデバッグを困難にする多くのメッセージを生成します

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

macos - コマンド ライン ツールを使用して、OSX でプロセスをブロックしているものを特定しますか?

タイトルはそれを最もよく表しています。Linux では、 and おそらくorで簡単に実行できます。また、OSX Leopard から が削除されるまで、OSX では簡単でした。また、基盤となるシステム コール (afaik) も同様です。stracelsof/proctruss

明らかなアプローチは でこの問題に取り組むことですが、悲しいことにdtrace、イベントが発生したときにイベントをキャッチするため、私が理解している限りでdtraceはうまくいきません。私の場合、ブロッキングシステムコールはすでに開始されています。ちなみに、これが解決できる場合は、修正したいと思いますdtrace

XcodeのInstrumentsには、プロセスのスタックの定期的なサンプルを取得することで同様のことを実現するモニターがあることがわかりました(それを行うためにどのシステムコールが依存しているかはわかりません!)、おそらくコマンドラインで同様のもので十分です(システム コールをラップするライブラリ コールまでのスタックを表示します)。私のユースケースに役立つように、この「サンプリングコマンドラインツール」は、スタック上で見つかった引数を見つけて解析し、ブロックされているファイル/ファイル記述子を特定するのに役立つ必要があります。

最後にもう 1 つ - Linux では、通常、通常のユーザーとしてこれを行うことができます (ptrace_scopeトリックがない場合)。OSX ソリューションが root を必要としないのも素晴らしいことです。

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

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 ファイルを変更するにはどうすればよいですか。バイナリがライブラリを読み取る場所から、実行環境と関係がある必要があります。

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

python - strace 出力処理

私はこのようにstraceを使用しています:

次に、sedで明確なファイルリストを取得しています:

出力例があります:

私の問題は、フルネーム以外のエントリ (「util.c」や「./util_cfgtree.h」など) です。strace 出力でフルネームを取得する方法はありますか?

私はこのスクリプトを書きました:

しかし、Python に関する私の知識は非常に貧弱です。

間違いや悪い解決策はありますか?

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

android - strace の Android アプリ

私は Android タブレットを使用しており、ランダムな再起動を引き起こしているアプリをデバッグしようとしています。

straceバックグラウンドまたは同等の機能を実行するためにインストールできるアプリはありますか? これは通常どのように処理されますか。

常に実行され、システム イベントをログに記録するアプリがあるかどうかを確認しています。

ご清聴ありがとうございました。

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

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の更新では、異なるバージョン番号が必要になる場合があります。

誰かがそれが本当かどうか確認できますか?

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

qt - Qtプログラムの環境

Qt実行可能ファイルがあります。このプログラムをUbuntu11.04仮想マシンで実行すると、GUIは見苦しくなりますが、それでも必要なGUIであることがわかります。ただし、私のラップトップのUbuntu 12.04で実行すると、すべてがうまくいきます。したがって、仮想マシンの環境に問題があるのではないかと思います。

問題がライブラリにあるかどうかを確認するために、コマンドを実行しました

私は次のようにライブラリの依存関係を取得しました:

それでは、どうして違うのだろうか。straceなどのツールで何が問題になっているのかを知ることはできますか?

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

hook - LD_PRELOADとstraceの違いは何ですか?

どちらのメソッドも、システムコールとパラメーターおよびそれらの戻り値を収集するために使用されます。私たちが好むときLD_PRELOADとその理由は?たぶん、私たちは経由でのみシステムコールを収集できると言うことができますが、トリックstraceでライブラリコールを収集することができます。LD_PRELOADただし、名前が。であるライブラリ用の別のトレーサーがありltraceます。