2012-01-05 32 views
5

Đó là một lỗi mà tôi vừa tìm thấy! Hoan hô. Lỗi này là do lỗi không chính xác, và thực sự tôi đã sử dụng static_cast thay vì dynamic_cast.WinDbg có thể phát hiện lỗi bộ nhớ heap do downcasting không hợp lệ không?

Ứng dụng của tôi khá lớn và đa luồng và tương tác với các ứng dụng khác. Vì vậy, gỡ lỗi là rất khó. Tôi đã cố gắng sử dụng WinDbg, GFlagsApplication Verifier mà không có kết quả. Chắc chắn vì tôi không biết cách sử dụng những công cụ này.

Có thể tìm thấy một lỗi bộ nhớ heap do một downcasting không hợp lệ, với việc sử dụng các công cụ như WinDbg? Nếu có, làm thế nào?

+0

gì được một lỗi mà bạn vừa tìm thấy? Bài đăng này không có ý nghĩa gì cả. –

+0

@Lightness: ouch, thực sự? – Guillaume07

+0

Thực sự là gì? Hai câu đầu tiên của bạn không có ý nghĩa gì cả. Họ nói về một số lỗi mà bạn chưa đưa vào câu hỏi. Lỗi gì? –

Trả lời

9

đống -s -v Windbg! Lệnh có thể tiết lộ một đống tham nhũng

0:008> !heap -s -v 

    Heap  Flags Reserv Commit Virt Free List UCR Virt Lock Fast 
       (k)  (k) (k)  (k) length  blocks cont. heap 
----------------------------------------------------------------------------- 
.ERROR: Block 001842e8 previous size 0 does not match previous block size 4 
HEAP 00140000 (Seg 00140640) At 001842e8 Error: invalid block Previous 
1

EDIT: Nhận xét đã làm rõ rằng các tùy chọn không phải của Windows không thể thực hiện được. Trong trường hợp đó tôi đã có may mắn với Purify trước đây, nhưng tiếc là nó $$$. Tuy nhiên, tôi không quen thuộc với các công cụ kiểm tra bộ nhớ Windows khác.

Liên quan đến trường hợp cụ thể này, bất cứ lúc nào bạn thấy mình downcasting, dành ít nhất một phút suy nghĩ về một giao diện thay thế hoặc thiết kế có thể loại bỏ sự cần thiết. Lỗi trình biên dịch và cảnh báo, và một thiết kế vững chắc có thể tìm thấy rất nhiều lỗi mà nếu không sẽ mất nhiều giờ để tìm.

+0

đề xuất valgrind cho người dùng cửa sổ? – PlasmaHH

+0

@Mark B: vì vậy bạn xác nhận rằng có thể với valgrind để có trong đầu vào các bãi chứa của ứng dụng khi nó sụp đổ và trên đầu ra dòng mã mà gây ra vấn đề? – Guillaume07

+0

@PlasmaHH: có thực sự nhưng tôi nghĩ rằng có công cụ tương đương dưới cửa sổ – Guillaume07

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