開発環境以外の Linux ディストリビューションで生成されたコア ファイルをデバッグする場合、スタック トレースは信頼できない可能性があります。動的にリンクされた実行可能ファイルは、ディストリビューションによって実装が異なる可能性がある共有ライブラリを使用します。 GDB は、開発環境で利用可能なライブラリのバージョンを使用しようとしますが、これは顧客のシステムのものとは異なる場合があります。その結果、スタック アドレスが別のルーチンにマップされたり、命令内に配置されたりする可能性があり、不正確なスタック トレースを示しています。
意味のあるスタック トレースを取得するには、すべての共有ライブラリを次から取得します。顧客のシステムに接続し、GDB で solib-absolute-prefix パスを設定します。これにより、シンボル解決に顧客のライブラリを使用するように GDB がリダイレクトされます。
顧客に -g バイナリを実行するようアドバイスする代わりに、次のことをお勧めします。
このアプローチでは、顧客にデバッグ バイナリを配布したり、機密性の高いソース コードを公開したりすることなく、完全なシンボリック情報が提供されます。
さらに詳しいデバッグの洞察については、次のことを検討してください。以下を参照してリソース:
Linux:
Solaris:
これらの本では、アセンブリ分析を含む、Linux および Solaris でのデバッグのための実例と高度なテクニックを提供します。
以上が異なる Linux ディストリビューションで生成されたコア ファイルを確実にデバッグするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。