Tôi đang viết một thư viện đối tượng chia sẻ C ++ khá lớn và đã gặp phải một vấn đề nhỏ khiến việc gỡ lỗi trở nên khó khăn:
Nếu tôi xác định một hàm / phương thức trong tệp tiêu đề và quên tạo sơ khai cho nó (trong quá trình phát triển), vì tôi đang xây dựng dưới dạng thư viện đối tượng được chia sẻ chứ không phải là tệp thực thi, không có lỗi nào xuất hiện tại thời điểm biên dịch cho tôi biết tôi có quên thực hiện chức năng đó. Cách duy nhất tôi phát hiện ra điều gì đó không ổn là trong thời gian chạy, khi cuối cùng một ứng dụng liên kết với thư viện này gặp lỗi 'ký hiệu không xác định'.
Tôi đang tìm một cách dễ dàng để kiểm tra xem tôi có tất cả các ký hiệu tôi cần tại thời điểm biên dịch hay không, có lẽ một số thứ tôi có thể thêm vào Makefile của mình.
Một giải pháp mà tôi đã đưa ra là chạy thư viện đã biên dịch nm -C -U
để có được danh sách tất cả các tài liệu tham khảo không xác định được gỡ rối. Vấn đề là điều này cũng xuất hiện với danh sách tất cả các tài liệu tham khảo nằm trong các thư viện khác, chẳng hạn như GLibC, tất nhiên sẽ được liên kết với thư viện này khi ứng dụng cuối cùng được kết hợp với nhau. Có thể sử dụng đầu ra của nm
để grep
thông qua tất cả các tệp tiêu đề của tôi và xem có tên nào tương ứng không .. nhưng điều này có vẻ điên rồ. Chắc chắn đây không phải là một vấn đề phổ biến và có một cách tốt hơn để giải quyết nó?
nm -C -u
đã cứu tôi nhiều lần! (lưu ý chữ thường-u
trên hệ thống của tôi.) Để lại nhận xét này ở đây để tôi có thể tìm thấy nó vào lần sau nếu tôi cần nó.