Tôi đang cố gắng hiểu cách một thư viện hoạt động. Tôi đã biên soạn nó với các bản nháp được thêm vào của tôi và mọi thứ đều tuyệt vời. Bây giờ tôi muốn dừng chương trình ví dụ trong suốt thời gian chạy để nhìn vào ngăn xếp cuộc gọi, nhưng tôi không thể tìm ra cách thực hiện nó với gdb. Hàm tôi muốn chia nhỏ, nằm trong thư viện được chia sẻ. Tôi đã xem xét một previous question ở đây trên SO, nhưng cách tiếp cận này không hiệu quả đối với tôi. Ngôn ngữ được đề cập là C++. Tôi đã cố gắng cung cấp tên tệp và số dòng, nhưng gdb từ chối hiểu rằng, nó chỉ liệt kê các tệp nguồn từ ứng dụng demo.Gỡ lỗi/truy tìm bên trong thư viện được chia sẻ trong thời gian chạy?
Mọi đề xuất?
Có, nhưng hãy chắc chắn bạn đã biên soạn thư viện với -g, và với tối ưu hóa tắt! – Alex
Thật không may là không giúp được gì. Chức năng vẫn không hiển thị, ngay cả từ chính. Có bất cứ điều gì tôi có thể thêm vào mã, để thực hiện việc dừng lại và thả vào trình gỡ lỗi? – EightyEight
@EightyEight: Hmm, có hiệu quả với tôi. Là thư viện bạn đang cố gắng để gỡ lỗi có lẽ tự động nạp thông qua dlopen()? Điều đó có thể giải thích tại sao nó vẫn không hiển thị trong chính. Nếu đúng như vậy, bạn có thể đặt điểm ngắt đầu tiên của mình sau cuộc gọi dlopen cho thư viện đích, sau đó đặt điểm ngắt cuối cùng. Có vẻ như có một cách đơn giản hơn; Tôi sẽ tiếp tục tìm kiếm. –