2016-07-11 25 views
6

Gần đây tôi đã xem qua this project. Mã này phần lớn được viết bằng C và API chỉ bao gồm một vài hàm C. Thật không may là dự án dường như chứa một số lỗi, đặc biệt là tôi tiếp tục nhận được lỗi "miễn phí đôi hoặc tham nhũng". Tôi đang cố gắng sử dụng valgrind và gdb để tìm hiểu những gì là sai. Vấn đề dường như nằm trong bộ cấp phát bộ nhớ. Rất tiếc, lỗi valgrind đầu tiên xảy ra trong một số macro tiền xử lý dài ~ 400 dòng được xác định trong tiêu đề. Thật không may gdb không thể phá vỡ mã được tạo ra. Theo dõi ngăn xếp không phải là rất hữu ích hoặc. Có kỹ thuật nào có thể được sử dụng để đối phó với các loại lỗi này không?Cách gỡ lỗi macro tiền xử lý

+3

Nếu nó đã được tôi? Chuyển đổi macro thành một hàm nội tuyến. Nếu dự án thực sự sử dụng chúng rộng rãi (và điều đó không làm tôi sợ sử dụng mã), tôi có thể thử xử lý trước một tệp, sau đó biên dịch và gỡ lỗi tệp đó. –

+6

400 + dòng macro Oo! Cố gắng tạo ra nguồn c sau khi vượt qua tiền xử lý (tùy chọn gcc -E) và thiết lập các điểm ngắt trong tệp này. – Picodev

+0

Vâng, họ xác định hàng đợi ưu tiên chung "đường C": ( – hfhc2

Trả lời

1

Trình biên dịch trực tuyến Wandbox.org có chế độ "CPP" rất hữu ích để thử nghiệm với bộ tiền xử lý C.

Xem ví dụ ở đây: https://wandbox.org/permlink/tFUsKMIXaQj8hhte

Bạn có thể làm điều tương tự ẩn, với gcc -P hoặc cl.exe /E

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