2011-12-07 72 views
5

Tôi có hàm trả về con trỏ:Đặt điểm ngắt trong GDB

void tĩnh * find_fit (size_t asize);

tôi muốn thiết lập một breakpoint trong gdb, nhưng khi tôi gõ tên hàm này, tôi nhận được một trong các lỗi:

nghỉ * find_fit Chức năng "* find_fit" không được định nghĩa

hoặc

break find_fit Chức năng "find_fit" không được xác định

Tôi có thể dễ dàng đặt điểm ngắt trên hàm trả về thứ gì đó không phải con trỏ, nhưng khi hàm trả về con trỏ, gdb dường như không muốn ngắt nó.

Mọi người đều thấy điều gì đang xảy ra? Cảm ơn!

+0

Ngôn ngữ nào? C? C++? – smparkes

+0

Xin lỗi. C++ kkkkkkkkkkkkkk – Alex

Trả lời

4

Có vẻ như vì một lý do nào đó, gdb không xử lý tên xâu xâu chuỗi C++ một cách chính xác. Thông thường bạn không cần phải chạm vào bất cứ thứ gì để làm việc này. Bạn có thể thử show language. Thông thường, nó được đặt thành auto. Bạn cũng có thể thử đặt thủ công bằng set language c++.

Để kiểm tra, bạn có thể chỉ cần gõ

b 'find<tab> 

(đó là ký tự tab, không phải là nhân vật "<tab>") và nó nên cố gắng tự động điền tên của hàm cho bạn. Trong C++ bạn cần các kiểu đối số để biết hàm, nhưng điều đó không phù hợp 100% với những gì bạn thấy vì nếu bạn cung cấp cho gdb một tên hàm mà không có đối số, nó sẽ thường làm điều đúng hoặc nhắc bạn phiên bản của hàm bạn muốn. Bạn không nhìn thấy một trong số đó.

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