Trong khi tôi không thể giúp (chưa!) Trên hầu hết các vấn đề của bạn, tôi nghĩ công cụ C++ Test Coverage của chúng tôi có thể cung cấp cho bạn dữ liệu kiểm tra đa luồng khá dễ dàng.
Công cụ này cụ thể mã nguồn của bạn; bạn biên dịch và chạy nó. Bạn kết thúc với (giá rẻ) đầu dò thiết bị đo đạc trong mã của bạn đại diện cho các khối khác nhau. Thiết bị đo đạc ghi lại các phần nào của chương trình của bạn thực thi, được gọi là một bit bit với một bit là cho mỗi đầu dò thiết bị đo đạc. Khi kết thúc quá trình thực hiện (hoặc bất cứ khi nào bạn muốn), véc tơ bit này bị loại bỏ và người xem sẽ hiển thị nó cho bạn chồng lên mã.
Bí quyết để nhận phạm vi phủ sóng thử nghiệm nhiều lần là biết rằng chúng tôi cung cấp cho bạn kiểm soát hoàn chỉnh xác định cách thức hoạt động của thiết bị thăm dò; chúng là các macro. Vì vậy, thay vì sử dụng vĩ mô cơ bản mặc định của
probe[n]=true;
trên một mảng boolean, bạn có thể thực hiện thay vì
probe[n]|=1<<threadid;
trên một mảng int (hoặc một cái gì đó khéo léo rẻ hơn bởi precomputing giá trị này). Điều này có thể chỉ mất một vài dòng mã để triển khai.
Mọi người có thể lưu ý về mặt kỹ thuật này có sự cố đồng bộ hóa. Đó là sự thật, nhưng tối đa nó mất một chút dữ liệu về mức độ phù hợp và tỷ lệ cược so với tỷ lệ này khá cao. Hầu hết mọi người đều hài lòng với dữ liệu "khá tốt" thay vì hoàn hảo. Nếu bạn nhấn mạnh về sự hoàn hảo, bạn sẽ phải trả giá đồng bộ hóa cao bằng cách sử dụng một số hướng dẫn cập nhật nguyên tử .
Chúng tôi cũng cung cấp cho bạn quyền kiểm soát logic bán phá giá đầu dò; bạn có thể sửa đổi nó để viết ra dữ liệu bảo hiểm theo chủ đề cụ thể (trong hàng chục dòng mã tùy chỉnh). Trình xem dữ liệu phủ sóng thử nghiệm sau đó sẽ cho phép bạn xem phạm vi phủ định theo từng chủ đề (chỉ cần chọn đúng phạm vi phủ sóng); nó cũng có tích hợp sẵn cho dễ dàng tính toán/hiển thị giao lộ/union/diff trên vectơ vùng phủ sóng, cung cấp cho bạn chính xác mối quan hệ của bạn về mức độ phù hợp cho mỗi chuỗi.
Nguồn
2011-10-13 04:55:16
Chúc may mắn, tôi sẽ theo dõi câu trả lời hợp lý. Tôi nghĩ rằng bạn cần phải có một sự hiểu biết đầy đủ về các chủ đề thực hiện bạn đang tách ra để đa. Có rất nhiều công cụ để lập hồ sơ và sản xuất đồ thị thực thi (fav là trình biên dịch hiệu suất của Redgate, đắt tiền nhưng tuyệt vời) nhưng không có chi tiết cụ thể bạn đang chụp trong bóng tối. – Justin
@Justin Ah Tôi quên đề cập đến rằng ứng dụng tôi đang làm việc là trong C++. – fantasticsid
@fantasticid: Tôi đã chỉnh sửa tiêu đề của bạn để phản ánh sở thích của bạn. –