web-dev-qa-db-ja.com

プロセスが呼び出しているシステムコールを判別する「低レベル」の方法はありますか?

フリーズしているバイナリがあり、そのバイナリがたまたまパッケージマネージャーであるため、新しいパッケージをインストールできません。

Gdbで実行すると、プロセスがフリーズしたときにバックトレースを取得でき、次のようになります。

#0  0xb6cd9abc in syscall () from /lib/libc.so.6                                                                                                                                                                  
#1  0xb60a99b0 in startParsing () from /usr/lib/libexpat.so.1

したがって、expatが決して戻らないシステムコールを作成しているように見えます。

そのシステムコールについてもっと知るための「低レベル」の方法はありますか? straceをインストールしたいのですが、これはパッケージマネージャーが失敗しているため、straceをマシンに簡単にインストールできません。

CPUはアームであるため、既製のバイナリをダウンロードするのは少し複雑になります。

2
user50849

Straceがインストールされていると仮定します。

strace /path/to/binary

編集:私はあなたがstraceを持っていないという最後のビットを読んでいませんでした、あなたはあなたのパッケージマネージャーを使わずにstracetarballをダウンロードしてそれを構築することができるはずです。ビルドツールがインストールされていない場合は、別のマシンで静的にビルドし、コピーすることができます。

2