私はLinux / ARMの共有ライブラリで関数呼び出しを追跡するためのツールを探しています。デフォルトでは、私はコマンドラインを指定し、ツールから呼び出されたライブラリ関数と渡された引数の履歴を生成できるようにしたいと思います。これを達成するために、ある種の関数フックを使用できると仮定する。
私はltrace
それが私に必要な機能を提供することを知っています。しかし、ltrace
次の理由で私にはうまくいきません。
- より複雑なプログラムを追跡すると、セグメントが頻繁に発生します。
- 非常に遅い。
私はもう少し強力な選択肢を探しています。速度は良いですが、主な関心事ではありません。まず、(非回避)プログラムをプロファイリングできるライブラリ呼び出しを追跡する方法が欲しいです。
Sysdig は ARM でも動作しません。dtrace ポートは NetBSD でのみベータ版です。
そのようなツールを使用できるかどうかを知っている人はいますか?
答え1
見たことがありますか?LTTng? ARMを含む複数のアーキテクチャに適したカーネル空間/ユーザー空間追跡フレームワーク。
以下を使用して、ユーザー空間コード追跡を設定できます。LTTng-UST。ただし、追跡する共有ライブラリを再コンパイルし、LTTngトレースポイントを追加する必要があります。
公式のlttngドキュメントでユーザースペースの追跡を設定するための手順は次のとおりです。独自のユーザーアプリケーションの追跡
これはあなたの場合に役立つかもしれませんが、組み込みプラットフォーム(ARMを含む)でlttngをコンパイル/インストールする方法のStack Overflowスレッドもあります。組み込みLinuxシステムにLTTngを構築してデプロイする方法は?