2010-04-15 30 views
10

Bất kỳ ai biết thiết bị dò tìm rò rỉ và rò rỉ sẽ hoạt động với mã VS2010? Tốt nhất là chạy trên Win7.Phát hiện sơ đồ/rò rỉ VS2010

Tôi đã tìm kiếm tại đây và trong google. Tôi đã tìm thấy một máy dò rò rỉ hoạt động (Memory Validator) nhưng tôi không quá ấn tượng. Đối với một điều nó cho thấy một loạt các rò rỉ menu và các công cụ mà tôi khá tự tin là không có thật. Tôi cũng đã thử GlowCode nhưng nó JUST một profiler và từ chối cài đặt trên win7.

Tôi đã từng sử dụng AQtime. Nó có mọi thứ tôi cần, bộ nhớ/phát hiện rò rỉ tài nguyên, lược tả nhiều thứ khác nhau, phân tích tĩnh, v.v. Thật không may, nó cho kết quả không có thật.

Vấn đề chính trước mắt của tôi là VS2010 nói rằng có rò rỉ trong chương trình không có trong VS2005. Tôi gần như chắc chắn đó là dương tính giả nhưng tôi dường như không thể tìm thấy một công cụ tốt để xác minh điều này. Bộ kiểm tra bộ nhớ không hiển thị cùng một cái và báo cáo rò rỉ từ VS dường như không hợp lý.

+0

có thể sẽ rất đáng để thực hiện đánh giá Parallel Studio của Intel, phiên bản này có sẵn cho 32 và cho nền tảng 64 bit. –

Trả lời

1

Cá nhân, tôi thích DevPartner. Nếu bạn làm việc trong một công ty lớn, có thể bạn có thể thuyết phục họ trả tiền cho giấy phép nhượng quyền. Nó đắt tiền, nhưng nó rất chắc chắn.

0

tôi sử dụng nhiều lựa chọn thay thế thương mại và mặc dù họ có thể mang lại kết quả tuyệt vời, họ cũng thường chỉ đơn giản là không làm việc vì lý do không rõ:

  • Số lượng Rational: Sản phẩm tuyệt vời để thực hiện hồ sơ, nhưng họ thất bại trong việc phát hành mới các phiên bản trong vài năm, và thường (trong trường hợp của tôi) phần mềm thường từ chối làm việc
  • AQTime: cũng rất tốt (ít hơn Số lượng Rational) nhưng đôi khi từ chối làm việc vì những lý do không xác định.
  • Trình xác thực hiệu suất: cùng một

Trong những năm qua tôi đã quay trở lại cách lấy mẫu thô sơ. Đây không phải là hoàn hảo như sử dụng thiết bị đo đạc, nhưng nó nhanh hơn nhiều, có thể chạy trên bất kỳ ứng dụng nào và luôn hoạt động. Yêu thích của tôi là "Rất buồn ngủ" (http://www.codersnotes.com/sleepy) nhưng cũng Luke StackWalker (http://lukestackwalker.sourceforge.net/) là khá tốt. Vì các ứng dụng có thể chạy ngay lập tức và không có sự chậm lại đáng chú ý, vòng lặp "thay đổi ứng dụng, hồ sơ" rất ngắn và hiệu quả.

Để tìm rò rỉ bộ nhớ, có một số công cụ trong Windows mà bạn có thể sử dụng. Một lần nữa, chúng không hoàn hảo và thường chỉ có thể điều tra các ứng dụng đang chạy từ bên ngoài, chứ không chỉ đơn giản là báo cáo rò rỉ ở cuối ứng dụng. Hãy tìm "Công cụ gỡ lỗi của Microsoft" (UMDH, LeakDiag, gflags). Cá nhân, tôi tìm thấy nó dễ dàng hơn nhiều chỉ để viết quản lý bộ nhớ của riêng tôi, và để cho nó báo cáo rò rỉ ở phần cuối của ứng dụng. Nó không khó để viết. Những gì bạn phải làm là:

  • Thực hiện mới đúng và xóa nhà khai thác (Tôi nghĩ rằng bạn nên thực hiện 4 mới và 4 xóa nhà khai thác)
  • Trong việc thực hiện mới, nhận các cuộc gọi stack (tìm StackWalk) và lưu trữ nó với bộ nhớ được cấp phát.
  • Tạo một lớp khởi động trình quản lý bộ nhớ của bạn trong hàm tạo và báo cáo tất cả các rò rỉ (bao gồm cả ngăn xếp cuộc gọi) trong trình hủy.
  • Tạo biến toàn cục thuộc loại lớp đó. Nó có thể là cần thiết để biến nó thành một biến toàn cục đặc biệt bằng cách sử dụng #pragma (init_seg).
0

Không chắc làm thế nào để liên kết đến đây, mà tôi trước đó được đăng để đáp ứng với một câu hỏi tương tự:

Bạn có thể sử dụng umdh. exe để nắm bắt và so sánh ảnh chụp nhanh của quá trình trước và sau khi bị rò rỉ xảy ra. Điều này làm việc tốt nhất với các tệp nhị phân Debug nhưng có thể thực hiện với các đường dẫn biểu tượng được cung cấp chính xác được đặt chính xác - nó sẽ cung cấp cho bạn các callstacks bộ nhớ được cấp phát giữa ảnh chụp nhanh thứ nhất và thứ 2.

http://support.microsoft.com/kb/268343

Cách tiếp cận này có lợi thế là miễn phí.

3

Noah, như Ori đã đề cập, DevPartner Studio từ Micro Focus có cả tính năng phát hiện rò rỉ và các tính năng định cấu hình thời gian chạy khác. Không giống như giá cả cao cấp DPS đã theo Compuware, bây giờ bạn có thể cấp giấy phép chỉ là profilers thời gian chạy chứ không phải toàn bộ bộ nếu đó là những gì bạn cần. Shameless plug: Tôi làm việc trên nhóm DevPartner. Ứng dụng 64-bit của chúng tôi hỗ trợ các tàu trong bản phát hành 10.5 vào ngày 4 tháng 2 năm 2011. Tìm kiếm tin tức phát hành và đánh giá tải xuống trên http://www.DevPartner.com.

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