2009-04-17 32 views

Trả lời

31

Bản dựng gỡ lỗi sẽ chứa các biểu tượng gỡ lỗi có thể được trình gỡ lỗi sử dụng. Bản phát hành bản phát hành thường không chứa các biểu tượng gỡ lỗi, vì vậy nếu bạn nhận được kết xuất lỗi, tất cả những gì bạn sẽ nhận được là một loạt các địa chỉ thập lục phân thay vì các tên biểu tượng hữu ích.

Bản dựng gỡ lỗi không được biên soạn với tối ưu hóa (-O0 với gcc), trong khi bản dựng được phát hành được tối ưu hóa (thường là -O2 hoặc -O3). Tối ưu hóa làm cho gỡ lỗi nhiều, nhiều khó khăn hơn. Nếu bạn cố gắng để gỡ lỗi một ứng dụng phát hành, trình gỡ lỗi sẽ nhận được rất bối rối, vì báo cáo lắp ráp không còn phù hợp với báo cáo HLL, báo cáo được sắp xếp lại, chức năng được sắp xếp theo hàng vòng được unrolled vv

Debug và phát hành cũng xây dựng xác định các ký hiệu tiền xử lý khác nhau, và một số mã được biên dịch có điều kiện dựa trên các ký tự đó (ví dụ, các giới hạn mảng kiểm tra, xác nhận, vv), mặc dù điều đó phụ thuộc nhiều vào ứng dụng. Một ví dụ điển hình sẽ là #define NDEBUG cho chế độ phát hành, điều này khiến cho các xác nhận bị xóa.

0

Trong Tiger, bản dựng gỡ lỗi là "không được liên kết". Điều này là nó được tối ưu hóa cho bạn chỉ có môi trường và không thực sự là một xây dựng hoàn chỉnh.

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