2011-03-23 6 views

答えて

0

は、私はそれがこのような単純なことができると思います。次に、gdb vmlinuxを実行し、C関数を見たい場合はdisas <function name>と入力します。ただし、system_callはCの関数ではないので、GDBは同じ方法でそれを探しません。しかし、あなたはまだ分解することができます:

(gdb) info addr system_call 
Symbol "system_call" is at 0xc0403964 in a file compiled without debugging. 
(gdb) x/4i 0xc0403964 
    0xc0403964: push %eax 
    0xc0403965: cld  
    0xc0403966: push %fs 
    0xc0403968: push %es 
+0

Cの関数でない場合、 'system_call'とは何ですか? – assem

+0

@assem:これは、単にアセンブリコードのアドレスに解決されるリンカシンボルです。その定義[here](http://lxr.linux.no/linux+v2.6.37.5/arch/x86/kernel/entry_32.S#L496)を見ることができます。 – Karmastan

0

あなたは本当にlinuxから何かを逆コンパイルする必要はありません。あなたはソースを見ることができます。良いソースブラウザはLXRです。助けが必要な場合はカーネルのメーリングリストに参加してください。彼らはとても良い人です。

はデバッグシンボルを使用してカーネルをコンパイル、またはあなたのディストリビューションのバージョンを使用している場合、そのデバッグパッケージをつかむ:

+0

メーリングリストからではなく、逆コンパイラーで取得したいのですが... – assem

関連する問題