C で Apache モジュールを作成しました。特定の条件下では、segfault になる可能性がありますが、その理由はわかりません。この時点で、それは私のコードである可能性があり、プログラムをコンパイルしている方法である可能性があります。または、OS ライブラリのバグである可能性があります (segfault は dlopen() の呼び出し中に発生します)。
GDB と Valgrind を実行してみましたが、成功しませんでした。GDB は、無意味に見える dlopen() システム コールへのバックトレースを表示します。Valgrind では、バグは実際には消えているか、少なくとも再現不可能になっているようです。一方、これらのツールに関しては、私はまったくの初心者です。
私は実稼働品質の C プログラミングに少し慣れていません (何年も前に C を使い始めましたが、専門的に扱ったことはありません)。プログラムのデバッグのコツを学ぶための最良の方法は何ですか? 他にどのようなツールを調査する必要がありますか? 要約すると、新しいバグの課題に取り組む方法をどのように見つけますか?
編集: 明確にするために、Sydius と dmckee の意見に感謝したいと思います。私はApacheのガイドを見て、dlopen(およびdlsymとdlclose)にかなり精通しています。私のモジュールはほとんどの部分で機能します (約 3,000 行のコードで、この 1 つのセクションを有効にしない限り、問題なく機能するようです)。
これが私の元の質問の由来だと思います-次に何をすべきかわかりません。GDB と Valgrind を最大限に活用していないことはわかっています。正確なフラグでコンパイルしていない可能性があることはわかっています。しかし、私はそれ以上を理解するのに苦労しています。私がすでに知っていることを教えてくれる初心者向けガイドや、必要以上のことを教えてくれるマニュアル ページを見つけることができますが、ガイダンスはありません。