問題タブ [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.
c - strace を使用して C プログラムのシステム コールを知る方法
C プログラムで strace を使用してシステム コールをトレースする方法と、それを使用してコードをデバッグする方法を知りたいです。
linux - chroot でのサービス (openoffice ヘッドレス) の実行が遅い
ubuntu chroot 環境を (debootstrap を使用して) 作成し、unoconv を使用してファイルを変換するサービスとして openoffice を開始しました。動作しますが、chroot jail の外で 1 秒未満の変換を行うのに約 20 秒かかります。調べてみると、この余分な時間が、タイムアウトの期限が切れるソケット操作に費やされていることがわかります。同じ操作は、chroot 環境がなくてもうまく機能します。ただし、同様の操作は正常に機能します。
なにか提案を?
サーバーの起動 (chroot):
それを呼ぶ(クルートも):
タイムアウト トレース:
タイムアウトなしの同様のトレース (同じ unoconv 操作):
chroot の詳細:
- dchroot を使用して通常のユーザーとして使用する
マウントされたdev、procなど(fstab):
/tmp /var/local/chrootest/tmp
/dev /var/local/chrootest/dev
/sys /var/local/chrootest/sys
proc-chroot /var/local/chrootest/proc
devpts-chroot /var/local/chrootest /dev/pts
mpi - mpiexec で strace を使用する
mpiexec (MPICH2、Linux) で開始された MPI 並列ジョブのすべてのプロセスを追跡するにはどうすればよいですか?
-o
異なるプロセスからの出力を台無しにします
PS一部の編集者へ:誰がそれを考えるかもしれませんMPICH is the name of the library. MPICH2 is a particular version.
. MPICH2 は実際にはMPICH2 is an all-new implementation of MPI
mpich と mpich2 の両方を使用する必要がありました。したがって、mpich2 を mpich に置き換えることはできません。
macos - ルート以外の権限でtracedコマンドを実行するようにdtraceを取得するにはどうすればよいですか?
strace
OS XにはLinuxがありませんが、Linuxのdtrace
方がはるかに優れていると思われます。
ただし、個々のコマンドで単純なトレースを実行する機能がありません。たとえば、Linuxでは、strace -f gcc hello.c
すべてのシステムコールをキャプチャするように記述できます。これにより、コンパイラがプログラムをコンパイルするために必要なすべてのファイル名のリストが表示されます(優れたメモ化スクリプトはこのトリックに基づいて構築されています)
Macにメモ化を移植したいので、なんらかのが必要ですstrace
。私が実際に必要としているのは、gcc
読み取りと書き込みを行うファイルのリストなので、必要なのはもっとですtruss
。案の定dtruss -f gcc hello.c
、ある程度同じ機能を取得できますが、コンパイラはルート権限で実行されます。これは明らかに望ましくありません(セキュリティ上の大きなリスクは別として、a.out
ファイルがルートによって所有されているという問題があります:-)
次に試してみdtruss -f sudo -u myusername gcc hello.c
ましたが、これは少し違和感があり、とにかく機能しません(a.out
この時点ではファイルがまったく取得されないので、理由はわかりません)
その長い話はすべて、私の最初の質問を動機付けようとしています。Linuxの場合と同じように、通常のユーザー権限でコマンドを実行するにはどうすればよいですか。dtrace
strace
編集:これを行う方法を疑問に思っているのは私だけではないようです:質問#1204256は私のものとほとんど同じです(そして同じ次善のsudo答えがあります:-)
php - apache が毎回 15 秒間何かを recv() するのはなぜですか?
他の ZendFramework アプリとの XMLRPC 通信を使用している ZendFramework ベースのアプリケーションがあります。どちらも同じサーバー上にあります(開発用)。その通信は非常に遅く、その理由を突き止めようとしています。プロファイリングの後、ZF Lib XMLRPC リーダーの fgets() 内でスローダウンが発生するポイントに到達しました。
ZendFramework ベースの PHP アプリケーションを strace しているときに、recv() で 15 秒待機するパターンがいくつかありますか? なぜこれが起こっているのか誰にも分かりますか?
python - Python file.read()は、内部で必要以上のデータを取得します
しかし、straceは言います
あなたが上で見ることができるように-
read(3、 "import sys \ ndef file_open(filenam" ...、4096)= 150
プログラムが3バイトのみを読み取るように指示しているのに、read()が150バイトを返すのはなぜですか?
unix - Unix strace コマンド
cp の進行状況を監視するために、次の bash スクリプトを見つけました。
strace コマンドの「-ewrite」オプションがわかりません。私が見つけた最も近いものは、strace の man ページです。
-e write=set 指定されたセットにリストされたファイル記述子に書き込まれたすべてのデータの完全な 16 進数および ASCII ダンプを実行します。たとえば、ファイル記述子 3 と 5 のすべての出力アクティビティを確認するには、-e write=3,5 を使用します。これは、オプション -e trace=write によって制御される write(2) システム コールの通常のトレースとは無関係であることに注意してください。
ただし、 -ewrite オプションの機能がわかりません。
debian - インストールされているDebianパッケージのリスト-しかしひねりを加えた
長期間にわたって頻繁に使用していた古いDebianボックスがあり、正常に起動しなくなったため、新しいUbuntu Live CDを取り出して、人生で2度目のチャンスを与えました。すべてのファイルをバックアップしましたが、インストールしたパッケージを確認したいと思います。問題:dpkgのメンテナは、寄生されたLive CDではなく、問題のオペレーティングシステムからのみこれを実行することを期待しているようです。最終的な結果は、これを行う方法のグーグルの結果の完全な欠如です。
--listオプションを指定してdpkgが読み取るファイルを特定し、適切なファイルを移植してみますが、計画しているよりも優れたオプションがあることを望んでいます。
何か案は?
c - execve()によって渡された不明なopen()フラグ
FUSEファイルシステムにあるbashスクリプトを実行するopen()
と、次のフラグを使用して呼び出しが行われます。
フラグ(0100040
)は、のパラメータ2で渡されたフラグに対応している必要がありますopen()
。不明なフラグは、次のexecve()
呼び出しから発生します。
私のコードはを認識#define O_LARGEFILE 00100000
しますが、他のフラグexecve()
はが呼び出されたときにのみ発生するように見えます。
旗を探しても見つかりません:
ほとんどの場合、ターミナルフラグが見つかります。この旗の起源と意味を追跡する方法、またはその定義をどこで見つけるかについて、誰かが光を当てることができますか?
java - Javaプロセスをstraceしている間に多くのSIGSEGV
CIサーバー(実際にはMavenビルド)で単体テストの1つをデバッグしているときに、興味深いことが発生しました。strace -ff -e trace=network -p [pid]
ビルドプロセスのネットワークアクティビティを追跡するために、Javaプロセスに接続します。そしてそれは私が見たものです:
ですから、そこにはいくつかのネットワーク活動(私が実際に探しているものです)とたくさんのSIGSEGV
信号があります。
ビルドは正しく終了しました(1つの壊れたテストのみ)。状況を特定し、何度も何度も再現します。これは何を意味するのでしょうか?