2012-01-05 12 views
5

To błąd, który właśnie znalazłem! Hurra. Błąd wynikał z nieprawidłowego downcastingu i rzeczywiście używałem static_cast zamiast dynamic_cast.Czy program WinDbg jest w stanie wykryć uszkodzenie sterty pamięci z powodu nieprawidłowego downcastingu?

Moja aplikacja jest dość duża i wielowątkowa i współdziała z innymi aplikacjami. Dlatego debugowanie jest bardzo trudne. Próbowałem użyć WinDbg, GFlags i Application Verifier bez wyników. Z pewnością dlatego, że nie wiem, jak korzystać z tych narzędzi.

Czy można znaleźć uszkodzenie sterty pamięci z powodu nieprawidłowego downcastingu za pomocą narzędzi takich jak WinDbg? Jeśli tak, w jaki sposób?

+0

co to jest bug po prostu znaleźć? Ten wpis nie ma żadnego sensu. –

+0

@Lightness: ouch, naprawdę? – Guillaume07

+0

Naprawdę co? Twoje pierwsze dwa zdania nie mają sensu. Mówią o jakimś błędzie, którego nie wprowadziłeś do pytania. Jaki błąd? –

Odpowiedz

9

polecenia WinDbg! Sterty -s -v może ujawnić uszkodzony sterty

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

EDYCJA: Komentarze sprawiły, że opcje inne niż Windows nie są możliwe. W tym przypadku miałem szczęście z Purify wcześniej, ale niestety jest to $$ $. Nie jestem jednak zaznajomiony z innymi narzędziami do sprawdzania pamięci systemu Windows.

Jeśli chodzi o ten konkretny przypadek, zawsze, gdy znajdziesz się w dole, poświęć co najmniej minutę na przemyślany interfejs lub projekt, który może usunąć potrzebę. Błędy i ostrzeżenia kompilatora oraz solidny projekt mogą znaleźć wiele błędów, które w przeciwnym razie wymagałyby godzin.

+0

polecam valgrind dla użytkownika systemu Windows? – PlasmaHH

+0

@ Mark B: więc potwierdzasz, że valgrind ma możliwość wejścia do zrzutu aplikacji po awarii i na wyjściu linii kodu, która powoduje problem? – Guillaume07

+0

@PlasmaHH: tak, rzeczywiście, ale myślę, że istnieje równoważne narzędzie pod Windows – Guillaume07

Powiązane problemy