Red Hat Code Browser

更新 -

Red Hat Code Browser は、Red Hat 製品に同梱されるカーネルソースツリー、パッチ、RPM 仕様ファイル、および Changelog を表示するための新しいソースブラウザーです。プログラミング言語またはパッケージの結果を検索およびフィルタリングし、関数、クラス、構造体などの特定のシンボルを検索できます。

機能

  • シンボルおよびコードの抜粋を検索する
  • ソースコード、パッチ、spec ファイル、changelog を表示する
  • ソースコードのファイルに diff 操作を実行する
  • Changelog に対応するパッチファイルを表示する
  • ソースコードおよびパッチで利用可能な相互参照
  • 検索で利用できる言語とパッケージをフィルタリング

Red Hat Code Browser の使用方法

Red Hat Code Browser は、Red Hat Customer Portal Labs ページ (Red Hat Code Browser) で利用できます。

Code Browser ホームページでは、Red Hat Enterprise Linux に同梱されるカーネルのリストをリリース別に整理して表示します。カーネルをクリックして、カーネルソースツリーおよびファイルを表示します。一般的なプログラミング言語で書かれたソースコードファイルでは、構文が自動的に強調され、検出された識別子 (関数、マクロ、変数) がビルドイン検索エンジンで自動的に相互参照されます。


Drawing

画面上部の検索ボックスは、複数のカーネルソースでコードまたは特定のシンボルを検索するのに使用できます。検索は文脈依存です。特定のカーネルバージョンを表示している時にコードを検索すると、そのカーネルバージョンでコードが自動的に検索されます。

使用方法

検索操作を実行する

setShowDebug という名前の関数を検索します。

Drawing

特定のカーネルバージョン内で検索操作を実行する

特定のカーネルバージョン内で tg3_tx_recover 文字列 (たとえば kernel-3.10.0-123.4.2.el7) を検索します。そのカーネル内の検索結果が表示されます。

Drawing

フィルターファセットを使用して検索を最適化する

Makefile ソースを含むファイルで memcpy 文字列を検索します。検索バーに language: makefile パラメーターを入力したり、左側に表示されるフィルターリストから言語を選択したりして、プログラミング言語フィルターを使用します。

Drawing

ソースコードを表示する

Red Hat Code Browser ホームページからカーネルを選択すると、カーネルソースのツリーが表示されます。

Drawing

関数の一覧を表示する

カーネルソースを表示してファイルをクリックするとソースコードが表示されます。関数、マクロ、構造体、メンバー定義が左側に表示されます。関数をクリックすると、ファイル内の定義に移動します。

Jump to function

パッチを当てたソースを表示する

パッチがソースコードに適用されていると、パッチアイコンが左側に表示されます。アイコンをクリックして変更箇所を確認します。

Patch marker

Diff 操作を実行する

さまざまなカーネルバージョンで使用されるファイルへの変更を検索します。右端にある Diff ドロップダウンを使用して、現在のソースでその他のカーネルリリースと異なる箇所を検索します。

Drawing

パッチ一覧を表示する

Patches タブは、特定のカーネルバージョンに適用するパッチの一覧を表示します。パッチのファイル名、サイズ、そのパッチが含まれるカーネルのバージョンを含むパッチの一覧を表示します。

Drawing

パッチ内を検索する

検索ボックスの隣にあるドロップダウンをクリックして Patch を選択すると、パッチ内の skb_headlen 文字列を検索します。

Search within Patches

Bugzilla ID または CVE によって適用されるパッチを表示する

bugzilla: 1152755 を検索して、bugzilla #1152755 に適用されるパッチの一覧を表示します。

Search patches by Bugzilla ID

または、cve: CVE-2014-3688 を検索して、CVE-2014-3688 に適用するパッチの一覧を表示します。

パッチで修正された行を検索する

xfs_ail_min_lsn 文字列を含むコードを修正するすべてのパッチを一覧表示する modified_lines: xfs_ail_min_lsn を検索します。

Search for modified lines

同様に、added_lines: set_thread_flag(TIF_NOTIFY_RESUME)set_thread_flag(TIF_NOTIFY_RESUME) 文字列を追加するパッチを検索し、removed_lines は、この文字列を削除するパッチを検索します。

Spec ファイルを表示する

Spec タブは、特定のカーネルバージョンを構築するために使用される spec ファイルを表示します。

Drawing

Changelog を表示する

Changelog タブは、特定のカーネルバージョンの Changelog と、そのバージョンに適用されるパッチへのリンクを表示します。Bugzilla ID や CVE 識別子が利用できる場合は適切なページにリンクされます。

Drawing

Red Hat Code Browser の使用事例

Red Hat Code Browser における重要な使用事例である vmcore ファイルを解析します。Code Browser の強力な検索機能とフィルター機能を使用すれば、指定したカーネルバージョンとファイルパス内のソースコードの範囲を絞り込むことができます。Code Browser がカーネルソースでどのように動作するか以下で説明します。

カーネルの vmcore を解析する

vmcore を解析する場合は、サマリーとバックトレースから開始します。

KERNEL:
/cores/retrace/repos/kernel/x86_64/usr/lib/debug/lib/modules/2.6.32-431.11.2.el6.x86_64/vmlinux
RELEASE:2.6.32-431.11.2.el6.x86_64
PANIC:"kernel BUG at drivers/net/tg3.c:6409!"

[exception RIP: tg3_tx_recover+133]
RIP: ffffffffa03aeb85  RSP: ffff880002203cf0  RFLAGS:00010286
RAX:00000000000000af  RBX: ffff8800374566e0  RCX:00000000ffffffff
RDX:0000000000000000  RSI:0000000061a37000  RDI: ffff8800374566e0
RBP: ffff880002203d10   R8: ffff880002214008   R9: ffffffff81a01ea8
R10:0000000000000000  R11:0000000000000001  R12: ffff8800374567e0
R13: ffff8800da5e1068  R14:0000000000000002  R15:0000000000000000
ORIG_RAX: ffffffffffffffff  CS:0010  SS:0018
...
...

上述の vmcore によると、問題のカーネルは kernel-2.6.32-431.11.2.el6 でシンボルは tg3_tx_recover です。これにより、symbol tg3_tx_recover を検索してコードの動作を確認できます。

検索例:
tg3_tx_recover version:kernel-2.6.32-431.11.2.el6


Drawing

シンボルを検索する

特別な検索キーワード tag を使用すると識別子を検索できます。たとえば、MM_PAGEVEC_FREE をいうシンボルを検索します。

検索例:
tag: MM_PAGEVEC_FREE


Drawing

この結果から、検索するシンボルは同じであることがわかります。

Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.