Algemene debugging workflow

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 13-09 20:47

LauPro

Prof Mierenneuke®

Topicstarter
Af en toe loop ik tegen een probleem aan en dan sta ik echt in een put te graven waar ik niet uit kom. Wat ik dan meestal doe is even naar buiten of ik wacht een dag zodat ik weer met een frisse blik naar het probleem kan kijken.

Zo had ik vandaag een probleem met een QT-app waarbij een slot niet werk aangeroepen. Uiteindelijk bleek dat het signal nooit aan kwam bij het slot omdat deze verbonden werd nadat het signal werk geëmit.

Ik vraag mij dus af of er geen generieke debugging workflow is. Bijvoorbeeld:

• Kijk eerst naar alle waarden binnen de huidige scope.
• Bekijk de trace-stack.
• Probeer het probleem te isoleren tussen twee breakpoints.
• Loop tussen deze breakpoints door stap voor stap totdat je op de regel uit komt.

Op zich kan dit gelden voor elke taal. Bestaan er goede debugging workflows om fouten op te zoeken?

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik heb geen idee of er boeken of andere bronnen zijn voor een "goede workflow"; ik ben er echter van overtuigd dat als je kunt (of denkt te kunnen :P ) programmeren je automatisch ook moet weten op welk punt een oorzaak van je probleem kan ontstaan en daar ga je dan breakpoints zetten, variabelen inspecteren etc. Heb je vreemde waarden dan is 't probleem al eerder opgetreden en ga je nog en paar stappen terug, is alles in orde dan ga je wat dieper erin en zet je juist verderop een breakpoint.

Ik zie 't meer als schilderen; zoiets leer je niet uit een boek. Je leert 't door 't doen, een beetje talent is mooi meegenomen, en logisch nadenken. De basis is misschien nog wel te vatten in regels maar daarna komt 't toch aan op "sherlock holmes" kwaliteiten, gut-feel, ervaring en andere "niet te vatten" kwaliteiten. Het is 99% pure deductie; uitsluiten waar 't aan ligt tot je bij de oorzaak aangekomen bent. Tel daarbij op dat iedere case weer anders is... Nee, ik geloof niet zo in een silver bullet hiervoor.

En laten we wel wezen; zo spannend is debuggen nou ook weer niet ;)

[ Voor 8% gewijzigd door RobIII op 05-09-2011 17:36 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 13-09 20:47

LauPro

Prof Mierenneuke®

Topicstarter
Niet spannend... Ik zit nu met de QTCreator te klooien en ik heb allemaal waardes die <no such value> of <unavailable synchronous data> zijn zonder dat ik er een view overheen kan zetten.

De enige oplossing is dan om echt diep in de materie te duiken en allemaal voorbeelden te zoeken hoe men het oplost in andere programma's.

Ik zit eraan te denken om een soort stappenplan te schrijven van hoe je dit soort situaties aan kan pakken. Het is vaak dat je iets over het hoofd ziet er daarmee uren bezig kan zijn (escalation of commitment).

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
LauPro schreef op maandag 05 september 2011 @ 17:37:
Niet spannend... Ik zit nu met de QTCreator te klooien en ik heb allemaal waardes die <no such value> of <unavailable synchronous data> zijn zonder dat ik er een view overheen kan zetten.
Misschien ben ik wat verwend met VS de afgelopen decennia :P

Worst case kun je nog altijd gewoon je variabelen dumpen naar een file oid. Zo moeilijk is 't niet.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 14-09 22:34
RobIII schreef op maandag 05 september 2011 @ 17:39:
[...]
Worst case kun je nog altijd gewoon je variabelen dumpen naar een file oid. Zo moeilijk is 't niet.
Of qDebug() gebruiken, in dit geval.


Heeft QtCreator geen debugger? (Ik heb te weinig met Qt gewerkt om het te weten, ik ken enkel qDebug() :9.)

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 14-09 13:27

DataGhost

iPL dev

qDebug() is je vriend.
LauPro schreef op maandag 05 september 2011 @ 17:37:
Niet spannend... Ik zit nu met de QTCreator te klooien en ik heb allemaal waardes die <no such value> of <unavailable synchronous data> zijn zonder dat ik er een view overheen kan zetten.
Heel veel heb ik niet gedaan met de debugger in Qt Creator maar deze situatie doet me terugdenken aan vroeger, toen kon ik met Delphi ook een hoop variabelen niet inspecteren. Het builden/runnen in debug mode ipv release mode bood toen uitkomst en zelfs in release mode waren variabelen nog wel te inspecteren als je optimalisaties uitzette. Misschien dat dit je kan helpen?

edit:
Hee hierboven! :(


Edit2: Of juist debugging symbols aanzetten trouwens :p

[ Voor 5% gewijzigd door DataGhost op 05-09-2011 18:25 ]


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
LauPro schreef op maandag 05 september 2011 @ 17:37:
Niet spannend... Ik zit nu met de QTCreator te klooien en ik heb allemaal waardes die <no such value> of <unavailable synchronous data> zijn zonder dat ik er een view overheen kan zetten.
Mja daar zou ik dan eerst een oplossing voor zoeken. Ik gebruik onder Linux en OS X meestal gewoon gdb, en dat werkt prima. Zonder een goede debugger zou ik geen C/C++ willen programmeren. Het kan wel, maar het kost gewoon veel meer tijd :)
Pagina: 1