2008-10-15 37 views
24

Vấn đề của tôi là tôi đặt một số điểm ngắt trong mã của tôi và một số trong số chúng không hoạt động. Ở một số nơi, nó phàn nàn về "Điểm dừng chưa được giải quyết".Tại sao CDT Eclipse bỏ qua các điểm ngắt?

Có ai có bất kỳ đầu mối nào tại sao điều này xảy ra không? Tôi đang sử dụng gdb, bằng cách này.

EDIT: Có, tất nhiên được biên dịch với thông tin gỡ lỗi. Nó chỉ xảy ra ở một số lớp hoặc điểm trong mã. Và tôi khá chắc chắn rằng một phần của mã đạt được bởi vì tôi có thể đạt được nó bước

EDIT: Giải pháp từ Richard không hoạt động; dù sao cũng cảm ơn bạn. Tôi đang biên soạn trong Debug, mà không có bất kỳ tối ưu hóa.

+0

Bạn có đặt các điểm ngắt trên các dòng mã 'thực' không? Bằng cách đó, tôi có nghĩa là mã thực thi hơn là, nói, một dòng không chứa gì ngoài một cú đúp. – paxdiablo

+3

điều này cũng xảy ra với tôi mọi lúc; nói chung trình gỡ rối từ CDT Eclipse rất không đáng tin cậy, hãy xem – UncleZeiv

+0

Kiểm tra xem tệp thực thi của bạn có được biên dịch với thông tin gỡ lỗi hay không. – MysticSlayer

Trả lời

3

"Điểm ngắt chưa được giải quyết" chỉ có nghĩa là GDB không tìm thấy vị trí mã tương ứng với tệp và dòng mà bạn đã cố gắng đặt điểm ngắt.

Bạn đang cố gắng dừng lại trong một nhà xây dựng?

Nếu có, bạn có thể thấy giá trị cố định này được GCC bug cố định.

+0

Tôi cũng nhận được cùng một vấn đề bạn có thể giúp tôi xin vui lòng –

14

Có thể bạn đang cố gắng đặt điểm ngắt trong thư viện được chia sẻ chưa được tải. Điều đó sẽ không hoạt động cho đến khi thư viện được tải. Gdb mới hơn cho phép thiết lập các điểm ngắt được hoãn lại, nhưng có thể chưa được hỗ trợ bởi CDT. Giải pháp thay thế là đặt điểm ngắt tại một địa điểm có sẵn ngay từ đầu sẽ được truy cập khi thư viện được chia sẻ được đề cập đã được tải. Sau đó đặt điểm ngắt khác trong thư viện được chia sẻ. Bây giờ nó sẽ hoạt động. Đó là một chút tẻ nhạt, nhưng thường hoạt động.

Từ GDB documentation:

Đối với một breakpoint chờ có địa chỉ vẫn chưa được biết, lĩnh vực này sẽ chứa 'CHƯA'. Breakpoint như vậy sẽ không cháy cho đến khi một thư viện được chia sẻ có biểu tượng hoặc dòng được giới thiệu bởi breakpoint được nạp.

3

Đôi khi tối ưu hóa cũng sẽ làm cho điểm ngắt bị bỏ qua. Đảm bảo bạn đang biên soạn với -O0

0

Tôi nhận thấy rằng việc sử dụng F8 (tiếp tục) không dừng lại ở điểm ngắt của tôi. Nhưng, nếu tôi có Stop On Startup: chính thiết lập sau đó sau đó bước qua mã của tôi (F5/F6) sau đó breakpoints của tôi là hit. Tôi không có bất kỳ tùy chọn trình biên dịch đặc biệt nào khác ngoài -g hoặc -g3. Hy vọng rằng sẽ giúp đỡ ...

0

Đảm bảo loại điểm ngắt là chính xác. Đối với C/C++ đó là một chấm nhỏ màu xanh lam. Nếu nó trông giống như bất cứ điều gì khác, rất có thể là loại breakpoint là không chính xác. Tôi sẽ cố gắng để đóng tập tin, nhấp chuột phải vào nó -> mở với -> C/C++ Editor. Điều này làm việc cho tôi.

9

Tôi thấy rằng đôi khi chuyển Trình khởi chạy quy trình được giới thiệu từ "Trình tạo quy trình tạo GDB (DSF)" thành "Trình tạo quy trình tạo tiêu chuẩn" đã khắc phục vấn đề này cho tôi. Lần khác, chỉ cần xóa tất cả các điểm ngắt và khởi động lại Eclipse thực hiện thủ thuật.

0

Nếu các câu trả lời khác ở đây không giải quyết được vấn đề của bạn, có thể bạn đang gặp phải vấn đề tương tự như vậy (đó là kết quả của việc có phiên bản GDB lỗi thời). Đây có thể là trường hợp cho bất kỳ ai sử dụng GDB trên Mac.

Xem câu hỏi của tôi và trả lời ở đây:

GDB does not break on some lines of code when using multiple source files

0

Bạn đặt một breakpoint trong một lớp mẫu/chức năng? Tôi đã gặp vấn đề tương tự: Tôi có thể bước qua mã mẫu nhưng các điểm ngắt không hoạt động. Tôi đoán nhật thực không hiểu rằng nó phải đặt breakpoint trong tất cả các instantiations của lớp đó:

template <typename T> 
int doit(T a) { 
return a.do(); // <-- breakpoint here 
} 
... 
A a; 
cout << doit(a); 

Tôi nghĩ rằng nó sẽ chờ cho số tiền rất ít (...) và không bao giờ cho số tiền rất ít (...). Tại gdb thuê chính nó dừng lại trên điểm ngắt nếu tôi đặt nó thành hàm: 'doit'.

0

Tôi gặp vấn đề tương tự với GDB. Dường như nó được gây ra bởi các tên tệp mã giống hệt nhau ngay cả khi chúng có các đường dẫn khác nhau. Tôi đổi tên các bản sao và GDB làm việc tốt sau đó.

Silviu

0

tôi đã có cùng một vấn đề,

1.- Removed the breakpoints. 
2.- Restart eclipse 
3.- Clean the project by using project -> clean 
4.- Add again the breakpoints and start your debugging. 

này giải quyết vấn đề của tôi.

+0

Tôi cũng đã có vấn đề này và nó đã đủ để chỉ cần khởi động lại nhật thực. – user823981

0

NẾU bạn đang sử dụng GDB như một trình gỡ lỗi, chắc chắn rằng bạn đang sử dụng cả hai lá cờ: -g và -ggdb

Bạn có thể chỉnh sửa làm cho tập tin trực tiếp, FCFLAGS = -g -ggdb (một số khác cờ bạn có thể có)

hoặc chuyển đến Cấu hình gỡ lỗi (Trong trình đơn thả xuống khi bạn nhấp vào mũi tên nhỏ bên cạnh biểu tượng lỗi.) Chọn dự án bạn đang gỡ lỗi và nhấp vào tab trình gỡ lỗi. Kiểm tra bạn đang sử dụng gdb, và thêm các lá cờ ở đây.

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