2009-09-17 46 views
14

Tôi đang cố gắng đặt điểm ngắt trong linux trong gdb cho một chương trình tạo chuỗi. Tôi muốn đặt điểm ngắt khi tạo chuỗi nhưng không may là pthread_create là biểu tượng được phiên bản và tôi không thể lấy tên đầy đủ của nó.Điểm ngắt gdb trên pthread_create

Nếu tôi gõ:

catch thread_start 

tôi nhận được

Catch of thread_start not yet implemented 

thế nào là cách tốt nhất để bắt tạo thread trong gdb cho tình huống này?

Trả lời

15

Hãy thử điều này:

(gdb) b __pthread_create_2_1 

Hoặc xây dựng của riêng bạn GDB với this patch áp dụng.

Hoặc thử mới nhất trước khi phát hành GDBhere, mà nên cho phép bạn làm "catch syscall clone"

2

OK, tôi sẽ gửi hai câu trả lời, bởi vì tôi không chắc chắn nếu tôi hiểu câu hỏi của bạn.

Đầu tiên: pthread_create nằm trong thư viện được chia sẻ và gdb biết cách xử lý. Nếu bạn chỉ nói "break pthread_create", nó sẽ "chỉ hoạt động". Bạn không cần phải biết điều này, nhưng cách thức hoạt động của nó là gdb sẽ tìm thấy một biểu tượng "pthread_create @ plt", là một nhánh sẽ đưa vào trình tải động và cuối cùng sẽ được thay thế bằng cách nhảy tới chức năng thư viện được chia sẻ thích hợp. Chúng tôi sẽ đặt điểm ngắt tại đó, và gdb sẽ tự động xử lý bộ tải động cho đến khi cuối cùng đạt (và dừng tại) chức năng thư viện được chia sẻ chính xác.

Bây giờ trong trường hợp đó không giải quyết được điều đó cho bạn, về câu trả lời thứ hai của tôi ...

15

OK, vì vậy trong trường hợp tôi đã không thực sự hiểu bạn, hoặc câu trả lời đầu tiên của tôi là không hữu ích, làm điều này:

(gdb) info func pthread_create 
All functions matching regular expression "pthread_create": 

Non-debugging symbols: 
0x080485e0 pthread_create 
0x080485e0 [email protected] 
0x00786590 __pthread_create_2_1 
0x00786590 [email protected]@GLIBC_2.1 
0x00786ee0 __pthread_create_2_0 
0x00786ee0 [email protected]_2.0 

Bây giờ hãy chọn biểu tượng mà bạn cho là đúng và đặt điểm ngắt ở đó. Không chọn những cái có "@" trong chúng, nhưng một trong những chữ có số và dấu gạch dưới, chẳng hạn như 1__pthread_create_2_1.

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