2010-10-20 18 views
6

Jakie są twoje ulubione sztuczki do debugowania programów w C++ za pomocą gdb?C++ konkretne triki do debugowania za pomocą gdb

Interesują wszystkich sztuczek, ale także

  1. jak zadzwonić metod (które mogą być wirtualne) na obiektach od wewnątrz gdb

  2. inspekcji obiektów STL (dość ich drukowania)

  3. Zapobieganie gdb przed przejściem do kodu STL z kontynuowaniem

  4. zajmowanie się inliningiem, wątkami, tcma Lloc (lub niestandardowe podzielniki) Historia

  5. Prowadzenie poleceń gdb w różnych sesjach

+0

Byłbym bardzo zainteresowany większością poi nts, ​​które tam masz na liście ... Bardzo ładne pytanie – MOnsDaR

+1

Kolejna pozycja: Pojedynczy krok po listach inicjujących (czy można to zrobić za pomocą gdb?) – nobar

Odpowiedz

3

Spróbuj DDD podczas debugowania C++; DDD może dynamicznie ładować kod źródłowy do bibliotek współdzielonych i wyświetlać wiele zmiennych podczas debugowania.

+0

To był * bardzo * buggy, kiedy ostatni raz go wypróbowałem. Nie jestem pewien, czy w międzyczasie poprawił się. –

+0

Nadal jest bardzo błędny. W porównaniu do tego, co widzę na Mac (Xcode) lub Windows (Studio), jest o wiele lat w tyle. – user231536

+0

Totalview jest lepszy, ale kosztuje pieniądze, a Xcode/Studio są zależne od platformy, więc DDD jest czasami jedyną opcją. –

2

1.

set print object 

Umożliwia to ocenę hierarchii obiektów patrząc na vtable. Możesz więc zobaczyć, jaki typ ma referencja/wskaźnik do klasy bazowej.

2.

Get infos debugowania lub biblioteki unstripped dla bibliotekami systemu (najważniejsze: pthread i libstdC++), ponieważ w przeciwnym razie debugowania wielowątkowych aplikacjach nie działa ładnie w gdb.

0

Odkąd okazało się, jak mogę używać haków w ~/.gdbinit upiększyć wyjście GDB (liście, backtrace itp), nie mogę bez tego żyć ...

Oto blogentry który pokazuje, jak upiększyć kodu-wyjście i umieścić trochę „rozdzielacz” między swoimi uwagami: Beautify GDB

mam upiększony mój ślad też niezwykle przydatny dowiedzieć się, gdzie wystąpił błąd ... Może teraz ja” Załaduj potrzebne pliki, gdy będę miał do nich dostęp (teraz nie jestem w pracy)

+0

Link wydaje się być martwy. – Oak

+0

Masz rację. Jednak można znaleźć migawkę w archiwach internetowych: http://web.archive.org/web/20101217181206/http://www.michaelkelleher.info/?p=51 – MOnsDaR

Powiązane problemy