2010-10-05 22 views
6

Giả sử tôi có một dự án với hàng tá mô-đun khác nhau tạo ra một DLL kết quả, làm thế nào tôi có thể phân tích nó để tôi có thể xác định kích thước tệp thực tế mỗi module/chức năng đóng góp? Tôi biết nó có thể là không thể với một xây dựng phát hành, nơi nhiều thông tin đã được tước, nhưng làm thế nào về nếu tôi có nguồn đầy đủ và có thể làm một xây dựng gỡ lỗi?Phân tích các tệp .exe/.dll (Windows PE) cho các bloats mã

Ngoài ra, nếu có các biến tĩnh lớn được xác định ở đâu đó, có cách nào tôi có thể dễ dàng định vị chúng không?

Câu hỏi thưởng: Các tệp Linux ELF như thế nào?

+0

dumpbin nên IMHO hiển thị cho bạn toàn cầu/thống kê lớn. – valdo

+0

@valdo bất kỳ chi tiết nào về cách thực hiện? Tôi đã khám phá một chút và dường như không thể hiểu được. – kizzx2

Trả lời

4

Bất cứ khi nào tôi tham gia vào việc xác định bloat, tôi thường bắt đầu với dumpbin trên Windows. Thông thường bằng cách viết một công cụ để kiểm tra từng mô-đun đối tượng qua dumpbin rồi phân tích đầu ra. Nó có xu hướng là một quá trình lặp đi lặp lại và có thể mất một lượng thời gian hợp lý.

Để gỡ lỗi xây dựng với PDB Sizer có thể tạo báo cáo hữu ích.

Adrian có một số hướng dẫn hữu ích tại đây. Minimizing Code Bloat for Faster Builds and Smaller Executables và một công cụ gọi là SymbolSort để trợ giúp. Các nguồn trong C# được bao gồm với SymbolSort do đó có thể là một nơi tốt để bắt đầu nếu SymbolSort không giúp đỡ.

Đối với ELF, đầu ra của nmobjdump là điểm khởi đầu tốt.

+0

Điều này thật tuyệt vời! Họ có chính sách 24 giờ ngu ngốc này cho tiền thưởng: P – kizzx2

+0

Chỉ cần nhìn vào 'nm -S'. Thật là một vấn đề đơn giản mà rất mơ hồ để giải quyết trên Windows: P – kizzx2

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