2012-09-01 35 views
5

Tôi có một cuộc gọi chức năng thư viện phần thứ ba nằm rải rác tại rất nhiều nơi trong thực thi của tôi. Tệp thi hành của tôi được xây dựng bằng cách sử dụng các biểu tượng gỡ lỗi, nhưng thư viện của bên thứ ba không có các biểu tượng gỡ lỗi, do đó tôi không thể đặt điểm ngắt trên hàm. Tôi muốn đặt một điểm ngắt bất cứ khi nào chức năng thư viện được gọi, để kiểm tra ngăn xếp cuộc gọi. Làm cách nào tôi có thể đặt điểm ngắt tại tất cả các lời gọi hàm gọi hàm thư viện trong tệp thực thi của tôi.Làm thế nào để thiết lập một điểm ngắt trong gdb cho tất cả các yêu cầu của một hàm?

+0

Dường như người liên kết sẽ phải biết tên-> ánh xạ địa chỉ của hàm ngay cả khi không có biểu tượng gỡ lỗi, vì vậy tôi không thể hiểu tại sao bạn không thể đặt điểm ngắt trên đó. Bạn có chắc nó không nằm trong thư viện được chia sẻ sau khi bạn cố gắng đặt điểm ngắt không? –

Trả lời

4

Tôi nghĩ rằng cách duy nhất là:

  • tìm thấy bất kỳ cuộc gọi của chức năng này trong mã của bạn;
  • tạo điểm ngắt trong dòng đó;
  • chạy trình gỡ lỗi và dừng ở đó;
  • viết bằng gdb nexti để đến hướng dẫn chức năng đầu tiên;
  • lấy eip hiện tại sẽ trỏ vào đầu hàm đó;
  • tạo điểm ngắt mới tại địa chỉ được chỉ bằng eip;
Các vấn đề liên quan