Eclipse CDT dan gdb memiliki pendapat berbeda tentang lokasi file sumber

Saya melakukan hal berikut:

  1. mengimpor proyek Makefile ke Eclipse CDT.
  2. mengkompilasi program dari baris perintah menggunakan opsi -ggdb dari g++.
  3. jalankan program dari baris perintah
  4. atur beberapa breakpoint di Eclipse CDT
  5. melampirkan debugger Eclipse CDT (gdb) ke proses anak yang dihasilkan oleh program saya (proses anak menjalankan program dari proyek yang sama).

Pada titik ini saya mendapatkan pesan kesalahan di konsol

Tidak ada file sumber bernama /home/oswald/Eclipse/CDT/Workspace/Project/path/to/header.h.

Saat saya melanjutkan program, semua breakpoint saya dilewati. Bagaimana caranya agar breakpoint saya berfungsi?

Beberapa catatan tambahan:

  • Tidak ada perpustakaan bersama yang terlibat.
  • Gerhana Indigo, gdb 7.4, Ubuntu 12.04
  • Menggunakan baris perintah untuk melampirkan gdb ke proses, saya dapat mengatur breakpoint ke header.h:257 (header.h ada di folder /home/oswald/Eclipse/CDT/Workspace/Project/path/to/). gdb kemudian menghormati breakpoint ini.
  • Menggunakan baris perintah untuk melampirkan gdb ke proses, saya tidak bisa menyetel breakpoint ke /home/oswald/Eclipse/CDT/Workspace/Project/path/to/header.h:257, saya mendapatkan pesan yang sama dari gdb seperti saat menggunakan Eclipse CDT.
  • Eclipse CDT menggunakan Lampirkan GDB (DSF) ke Peluncur Proses. Beralih ke Lampirkan Standar ke Peluncur Proses menghasilkan pesan kesalahan bahwa sistem tidak dapat mencantumkan proses yang berjalan.
  • Jalur Pencarian Sumber dalam konfigurasi debug diatur ke default (Jalur File Absolut, Jalur File Realtif Program, Proyek). Saya bereksperimen dengan berbagai pengaturan lainnya, namun tidak ada yang berhasil.

person Oswald    schedule 26.11.2012    source sumber


Jawaban (1)


Sebagai solusinya, saya telah menulis skrip shell yang menghasilkan file .gdbinit yang berisi entri direktori yang sesuai:

#!/bin/sh

PROJECT=/home/oswald/Eclipse/CDT/Workspace/Project

find $PROJECT -name "*.h*" -o -name "*.c*" \
  | sed 's:/[^/]*$::' \
  | sort \
  | uniq \
  | sed 's/^/directory /' > $PROJECT/.gdbinit

dan mengonfigurasi Eclipse CDT untuk menggunakan file .gdbinit itu.

person Oswald    schedule 26.11.2012
comment
Tidak yakin apakah ini benar-benar berguna bagi siapa pun, tapi saya bisa menggunakan ini untuk melakukan hal yang sama kecuali sedikit lebih rumit. Saya perlu mengecualikan banyak folder svn dan CMake yang tidak berguna, dan hanya menyertakan file sumber dalam dua proyek spesifik di ruang kerja saya. Ini file saya: find $PROJECT \! \( -type d \( -path "*svn*" -o -path "*CMake*" -o -path "*.dir" \) -prune \) -type f \( -path "*/Ae9Ap9Mpi/*" -o -path "*/SpWx/*" \) \( -name "*.h*" -o -name "*.c*" \) \ | sed 's:/[^/]*$::' \ | sort \ | uniq \ | sed 's/^/directory /' > $PROJECT/.gdbinit - person xjsc16x; 25.04.2018