2011-01-05 40 views
7

Chương trình của tôi được biên dịch với cờ -g. Tôi gặp vấn đề sau:gdb: điểm ngắt cài đặt lỗi nội bộ

1) Tôi đã đặt điểm ngắt trong một hàm nằm trong tệp tiêu đề.

Điểm ngắt hoạt động. Bây giờ, khi tôi lên hai cấp độ, nó được cho là đưa tôi đến một tập tin C (Sizer.C: 505). Nó thực hiện, nhưng tôi nhận được vô số cảnh báo:

warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
warning: (Internal error: pc 0xff6324 in read in psymtab, but not in symtab.) 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
#2 0x0000000000ff6324 in SizePacketImpl<ZValue>::begin_x (this=warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
0x4888a88, bi=warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
0x56e6968) at Sizer.C:505 
505   ASSERTo(...some parameters ....); 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 

2) Nếu tôi VỚI DOANH NGHIỆP (sau khi đi hai cấp độ lên khi chương trình ở trạng thái nghỉ) cố gắng để trực tiếp đặt breakpoint trong Sizer.C

(gdb) break Sizer.C:504 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 

Breakpoint 3 at 0xff1bc7: file Sizer.C, line 504. 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 

Chương trình không dừng lại ở điểm ngắt.

3) Chỉ vì mục đích đầy đủ: Nếu tôi đặt điểm ngắt trong Sizer.C trước khi chương trình đã chạy, tôi không nhận được cảnh báo, nhưng chương trình vẫn không ngắt.

Tôi muốn đặt điểm ngắt trong Sizer.C. Làm cách nào để gỡ lỗi và khắc phục sự cố này?

Trả lời

3

Điều này có vẻ là một lỗi trong gdb. Kiểm tra trang này: http://sourceware.org/ml/gdb-patches/2003-01/msg00074.html để biết thêm chi tiết. Phiên bản gdb mà bạn đang sử dụng là gì? cố gắng nâng cấp lên phiên bản mới nhất và thử lại. Việc nâng cấp sẽ giúp bạn khắc phục sự cố.

[Cập nhật]

Tôi cũng thấy liên kết này: http://sourceware.org/ml/gdb/2006-06/msg00123.html

Dưới đây là một cách giải quyết được đề cập. hãy thử nhận xét mã như đã đề cập.

if (low == 0 && (bfd_get_file_flags (obfd) & HAS_RELOC) == 0) > return 0; 
+0

Tôi đang sử dụng 6.3.0. Xin lỗi, không hiểu cách giải quyết của bạn. Tôi nên đặt cái này ở đâu? –

+0

Tôi nghĩ phần cập nhật không liên quan đến trường hợp cụ thể này. Nó liên quan đến việc biên dịch gdb theo cách thủ công. Xin vui lòng bỏ qua nó. –

+0

Nâng cấp lên 7.1 đã khắc phục sự cố. Cảm ơn :) –

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