3

使用しているライブラリ(これは私の作業にとって重要です)があり、バグがあると思われます。残念ながら、ライブラリの所有者は、私のサンプルコードを試すほど反応がよくありません。自分でデバッグしてみようと思います。

正直なところ、これは単なるライブラリではなく、ライブラリとカーネルモジュールのセットであり、クラッシュはカーネルレベルで発生し(かなり厄介です)、コードの所有者を見つけるのも困難です。

運が良ければ、カーネルoopsを取得することがあります。彼のコードを-gオプションでビルドできれば、エラーが発生した行を見つけることができます(これは、彼の大量のコードにかなりの量で直面し始めたばかりなので、非常に役立ちます。手がかりはほとんどありません)。

現在、プロジェクトのGNUmakefilesはautomakeで構築されています(私は信じています)。私の質問は、ビルド全体に追加するように指示するにはどうすればよいですか?make-gCFLAGS

「外部」オプションを追加できるようにMakefileを作成する方法などを読んだことを覚えていますが、これらのmakefileがその機能で生成されるかどうか(automakeであるため)、またはそれらの外部オプションがどのように生成されるかはわかりません。とにかく与えられた!

私はこのようなものを推測しています:

make CFLAGS=-g

やるべきですが、正直なところわかりません。


-g編集:カーネルモジュールが構築されているときに含まれるフラグに実際に興味があることに注意してください。[CC] ...カーネルビルドはオプションを表示せずに出力するだけなので、試行錯誤を使用して(たとえば上記のコマンドで)機能するかどうかを確認することはできません。

編集:実際に試しましたgdb ./module.koが、デバッグシンボルがないと主張しています。

4

1 に答える 1

1

configureスクリプトはありますか?もしそうなら、それはautoconfによって作成されましたか?(おそらく。)それならあなたはできる

./configure CFLAGS='-g -O0'
make clean
make

デバッグをオンにして最適化をオフにして全体を再構築します。

そうでなければ、makefileの関連する抜粋を提供しない限り、誰もあなたを本当に助けることはできません。

于 2012-04-17T22:23:29.027 に答える