2012-10-19 38 views
17

Tôi đã có một dự án với một thư viện được chia sẻ (được tải động) và tôi đang cố gỡ lỗi nó. Tôi nhận được thông báo lỗi sau:Lỗi "Không có tệp nguồn có tên" gỡ lỗi Eclipse CDT

No source file named /home/username/Code/path/to/project/MyFile.cpp. 

Sau khi đã tìm kiếm chủ đề khác, tôi đã chắc chắn rằng tôi đang biên soạn với -g, và rằng các thư mục thích hợp là vào tab Path nguồn gốc của cấu hình debug. Phần lạ là nó đưa ra đường dẫn tuyệt đối chính xác: tập tin mà nó tham chiếu không tồn tại, vì vậy tôi không hiểu tại sao nó không nghĩ nó ở đó.

Bất kỳ ai biết phải làm gì về điều này?

Trả lời

22

Tôi chỉ gặp vấn đề tương tự, mặc dù điểm ngắt của tôi nằm trong chính tệp thực thi, không phải trong thư viện được chia sẻ. Để giải quyết vấn đề này, tôi phải mở "Cấu hình gỡ lỗi", chọn cấu hình gỡ lỗi của tôi và điều chỉnh các cài đặt sau:

  • Ở dưới cùng, có liên kết "Chọn khác ..." để chọn Quy trình tạo trình khởi chạy. Nhấp vào liên kết. Chọn "Sử dụng cài đặt cấu hình cụ thể". Chọn "Trình tạo quy trình tạo tiêu chuẩn" và nhấn "Ok".
  • Chuyển đến tab "Trình gỡ lỗi" và trên đầu tab, chọn "Trình gỡ lỗi: gdb/mi". Trên cùng một tab cũng có một hộp kiểm "Sử dụng đường dẫn tập tin đầy đủ để thiết lập các điểm ngắt" - Tôi đã chơi với điều này, nhưng nó dường như không ảnh hưởng đến vấn đề chúng ta quan sát (rõ ràng là đường dẫn nguồn của chúng ta) đã là đường dẫn đầy đủ).

Đối với breakpoint trong các thư viện chia sẻ, bạn có thể cần thêm thông tin (đặc biệt là về breakpoint hoãn) từ Debugging with eclipse cdt and gdbWhy does eclipse cdt ignore breakpoints.

Lưu ý: Điều này đề cập đến Eclipse Kepler (4.3) và gdb 7.4.

+2

câu trả lời hay, tôi nghĩ điều đó là chính xác. Bạn cũng có thể muốn xem câu hỏi này/.answer too: http://stackoverflow.com/q/801423/1284631 – user1284631

+0

Trong trường hợp của tôi, sau khi thử tất cả các bước trên vô ích, nó đã kết thúc việc cài đặt phiên bản mới hơn của gdb (7.4) đã sửa nó. – harish

0

Tôi gặp vấn đề tương tự nhưng giải pháp của tôi khác. Mở thư mục "debug/src" + "release/src" của dự án và đảm bảo rằng không có tệp [filename] .d chứa tên của bất kỳ tệp nguồn nào có thể đã thay đổi tên của chúng hoặc không còn tồn tại nữa. Tôi đã có một, xóa nó, và không còn lỗi nữa.

Do đó, tôi cho rằng, ít nhất trong trường hợp của tôi, các lỗi được tạo bởi các đối tượng đã rơi ra khỏi phạm vi.

2

Tôi có cùng một vấn đề, nhưng trong trường hợp của tôi đó là lỗi của tôi. Một số dự án của tôi đã được đặt thành Cấu hình phát hành và trình gỡ lỗi tự nhiên không thể tìm thấy thông tin tệp nguồn.

+0

Tôi đã có cùng một vấn đề. Tôi đã quên định cấu hình dự án CMake của mình bằng cách sử dụng '-DCMAKE_BUILD_TYPE = Gỡ lỗi'. – Ignitor

1

Tôi đã gặp vấn đề tương tự. Tôi không thể đặt điểm ngắt trong tệp thư viện được chia sẻ (.so), được biên dịch ở một vị trí khác với chương trình của tôi. Để sửa lỗi này:

  1. Đến Configuration Debug, tab Source
  2. Thêm một thư mục biên soạn (tôi đã sử dụng vị trí của makefile chính mà biên dịch tất cả các quá trình, không phải là nơi makefile cho quá trình này tọa lạc).
  3. cũng bấm vào nút "Subdirectories cũng được sử dụng để biên soạn" (makefile subprocess tôi được biên soạn trong một thư mục con của địa điểm chính)

tôi đã không tìm ra cách để thực hiện thay đổi này cho tất cả các cấu hình debug trong tương lai và quá khứ để tôi không phải thêm thư mục này mỗi lần, nhưng tôi sẽ cố gắng cập nhật sau nếu tôi tìm ra điều đó.

-1

cho mã dự án hiện tại của Makefile. bước 1 kiểm tra biên dịch tất cả các nguồn bằng -g -o0 bước 2 sử dụng gdbserver và arm-yourversion-gdb sẽ được cung cấp trong sdk và gdb toolchain của bạn.

0

Điều này có thể xảy ra nếu bạn có cả cygwin và mingw (hoặc một số biến thể khác). Nếu gcc từ Cygwin được sử dụng để biên dịch mã nguồn, bạn sẽ có đường dẫn Cygwin trong thực thi. Sau đó, nếu trình gỡ rối là từ mingw, gdb sẽ không thể giải thích đường dẫn Cygwin. Cách dễ nhất để giải quyết vấn đề này là vào Run -> Debug Configurations -> Debugger và thiết lập đường dẫn đầy đủ tới Cygwin gdb (C: \ cygwin64 \ bin \ gdb.exe). Điều đó giải quyết được vấn đề cho tôi.

0

Tôi đã theo dõi nhận xét của @Andreas Fester về tab Debugger trong cài đặt cấu hình Debug nhưng không thể tìm thấy "Debugger: gdb/mi", nhưng trong tab Nguồn, tôi đã xóa tất cả các mục và thêm "Đường dẫn tệp tuyệt đối" bằng cách nhấp vào "Thêm ..." nút ở bên phải của cửa sổ. Điều đó đã giúp tôi về vấn đề này

Các vấn đề liên quan