GDB が例外をキャッチするときに「raise.c がありません」と叫ぶのはなぜですか?

Susan Sarandon
リリース: 2024-11-08 21:11:02
オリジナル
355 人が閲覧しました

Why Does GDB Cry

GDB の嘆き: raise.c の欠落の難問を解決する

GDB では例外をキャッチする際に迷惑なエラーが発生する可能性があり、デバッガは「raise.c」がないこと。この問題を解決するために、問題とその解決策の深部を掘り下げてみましょう。

根本的な原因

不足している「raise.c」ファイルは GDB にとって重要ですデバッグ中に正確なソース行情報を提供します。これがないと、GDB はデフォルトで不確実な場所に設定され、わかりにくいエラー メッセージが表示されます。

段階的な解決策

この問題に効果的に対処するには、次の包括的な手順に従ってください。

  1. Debuginfo パッケージをインストールします: C ライブラリの debuginfo バージョン (「libc6-dbg」) がインストールされています。
  2. ソース コード パッケージを有効にする: 「dpkg-dev」をインストールして、ソース コード パッケージを処理できるように Ubuntu パッケージ システムを準備します。 " パッケージを作成し、"/etc/apt/sources.list" 内の deb-src 行がコメントなし。
  3. ソース コードのダウンロード: ディレクトリ (例: "/opt/src") を作成し、"apt source libc6" を実行して、インストールされている C ライブラリ バージョンのソース コードを取得します。ソースコードが存在するディレクトリを特定します(例: "/opt/src/glibc-2.23").
  4. ソース コードの場所を指定: GDB は、ソース コードが特定の場所にあることを期待します。 「info source」などの「gdb」コマンドを使用して、予想されるディレクトリを決定します。実際のディレクトリと予想されるディレクトリが異なる場合は、「set replace-path /build/glibc-KM3i_a/glibc-2.23 /opt/src/glibc-2.23」を使用して GDB のパスを更新します。

結論

これらの手順に従うことで、GDB からの不足に関する苦情は解決されます。ソース ファイルはサイレント化され、例外のシームレスなデバッグが可能になります。自信を持って C ライブラリ コードの奥深くまでナビゲートできるようになり、実行時の問題を正確に診断して解決できるようになりました。

以上がGDB が例外をキャッチするときに「raise.c がありません」と叫ぶのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート