Rumah >pembangunan bahagian belakang >C++ >Mengapa GDB Melaporkan Ralat Fail Yang Hilang Semasa Menyahpepijat Pengecualian C dalam Ubuntu?

Mengapa GDB Melaporkan Ralat Fail Yang Hilang Semasa Menyahpepijat Pengecualian C dalam Ubuntu?

DDD
DDDasal
2024-11-11 00:29:02613semak imbas

Why Does GDB Report a Missing File Error When Debugging C   Exceptions in Ubuntu?

GDB Memaparkan Ralat Fail Tiada untuk Kod Sumber Perpustakaan

Apabila menggunakan GDB untuk nyahpepijat pengecualian C, pengguna mungkin menghadapi mesej ralat yang menunjukkan tiada fail, seperti "Tiada fail atau direktori sedemikian" untuk "raise.c." Ralat ini boleh berlaku walaupun pengecualian dikendalikan dengan betul.

Penyelesaian: Dapatkan Kod Sumber Perpustakaan dan Maklumat Nyahpepijat

Untuk menangani isu ini, adalah perlu untuk mendapatkan kod sumber dan maklumat nyahpepijat untuk perpustakaan yang berkaitan, dalam kes ini, libc6. Ubuntu menyediakan pakej debuginfo untuk tujuan ini.

Langkah untuk Menyahpepijat Kod Sumber Perpustakaan C:

  1. Pasang versi debuginfo libc6: sudo apt install libc6- dbg.
  2. Konfigurasikan sistem pakej untuk memuat turun kod sumber pakej:

    • Pasang dpkg-dev: sudo apt install dpkg-dev.
    • Nyahkomen baris "deb-src" dalam /etc/apt/sources.list jika perlu.
  3. Muat turun sumber kod:

    • Buat direktori: /opt/src.
    • Muat turun kod sumber: apt source libc6.
    • Perhatikan direktori kod sumber (cth., /opt/src/glibc-2.23).
  4. Laraskan direktori kod sumber GDB:

    • Kenal pasti direktori kod sumber yang dijangka menggunakan (gdb) sumber maklumat.
    • Alihkan atau symlink kod sumber ke lokasi yang dijangkakan, atau tetapkan pengganti laluan: (gdb) tetapkan laluan pengganti /expected-location /actual-location.

Setelah langkah ini selesai, GDB akan dapat mengakses kod sumber yang betul dan berikan maklumat penyahpepijatan yang tepat untuk pengecualian.

Atas ialah kandungan terperinci Mengapa GDB Melaporkan Ralat Fail Yang Hilang Semasa Menyahpepijat Pengecualian C dalam Ubuntu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn