1

コード内のいくつかの関数をデバッグしようとしています。残念ながら、gdbはシステムで使用できないため、現時点では、printkメッセージ(Linuxカーネルドライバー)によってデバッグが行われます。

いくつかのパラメータで呼び出されている関数があります。誰がどのように関数を呼び出したかを知ることができるかどうか知りたいです。

ありがとう。

4

4 に答える 4

5

スタック ダンプを有効にして、スタックと呼び出しトレースを表示できます。関数 dump_stack() を使用して、スタックとコール トレースをデフォルト コンソールに出力できます。

見て :

于 2012-07-02T11:42:03.253 に答える
1

GCC は関数を提供します__builtin_return_address
__builtin_return_address(0)呼び出し元の関数内で、呼び出しサイトのアドレスを提供する必要があります。で最も近い値/proc/kallsymsを検索して関数を見つけます。

于 2012-07-03T07:01:06.803 に答える
1

Ctags と cscope を使用してオフラインでコードを読むこともできます。

vim で cscope fc Function_name を使用すると、呼び出しトレースが取得されます。

Windows では、Source Insight を試すことができます。

于 2012-07-03T04:13:58.263 に答える
1

カーネル コードで dump_stack() を呼び出す方法です。

于 2012-07-04T07:09:42.127 に答える