2016-04-17 3 views
1

次のオプションを設定して自分のカーネルを構築しています。vmlinuxからdebuginfoパッケージをインストールする方法

CONFIG_FRAME_POINTER=y 
CONFIG_DEBUG_INFO=y 

このように、生成されたvmlinuxファイルには、すべての必要なdebuginfoがあると仮定します。

私はそのカーネルをマシンにインストールし、vmlinuxファイルを/ boot /の下に置きました。 しかし、perfアノテーションを実行しようとすると、アセンブリコードに沿ってソースコードが表示されません。アセンブリコードとc関数名だけがソースコード全体ではないことを示しています(私は注釈中に "s"をトグルしようとしました)。

ここに私のperfコマンドがあります。

#perf record -g -a -e cycles:k sleep 5 
#perf report -f -g -s symbol 
#perf annotate -f -s <kernel function name> > annotate_<kernel_function>.txt 

私はここで何が欠けていますか? debuginfoパッケージを個別にインストールする必要はありますか?

よろしく、 Atish

+0

あなたは何のディストリビューションを実行している:

は、リンクを参照してください? – fluter

+0

Fedora 23と最新のカーネルソースコードからカーネルを構築しています。 – alex

+0

debuginfoパッケージは同じバージョンのカーネルにバインドされているので、最新のソースからコンパイルしたカーネルをデバッグする場合は、repoではなく、このコンパイルでビルドされたdebuginfoパッケージをインストールする必要があります。 – fluter

答えて

2

それはのdebuginfoパッケージの無効世代、あなたのカーネルソースツリーに、これを行うオープンscripts/package/mkspecを試してみてください、とを検索することができますので、のdebuginfoを生成しないカーネルRPMを構築するためのbinrpm-pkgの目標行echo "%define debug_package %{nil}"、この行をコメントするか削除して、もう一度ビルドしてみてください。

なぜなら、この行はrpmbuildにdebuginfoパッケージをスキップするように明示しているからです。

https://github.com/torvalds/linux/blob/9256d5a308c95a50c6e85d682492ae1f86a70f9b/scripts/package/mkspec#L45