Debuggen+van+mex-code+met+gdb

=Debuggen met gdb van mex C-code=

Gdb is een zeer handige tool om C (en c++) code te debuggen. Matlab biedt de mogelijkheid om in de vorm van mex-files C code tre gebruiken om functies efficient uit te voeren. Om deze code ook te kunnen debuggen aan de hand van gdb kan je volgende stappen gebruiken.

1. De mex-files moeten gecompileerd worden met de optie “-g” zodat, net als bij te debuggen C-code, symbol information wordt toegevoegd aan de code. Dit laat het gebruik van code-regels, variabele namen, … toe die ook in de oorspronkelijke broncode gebruikt werden. code mex -g mexfile.cc code 2. Het debuggen zal een niet-grafisch proces worden, hiervoor moeten we ook matlab in niet grafisch modus uitvoeren. Hierbij moeten we vermelden dat we de gdb-debugger willen gebruiken. code matlab -Dgdb code 3. De gdb-debugger wordt gestart. Hierbinnen starten we matlab code run -nojvm code 4. Indien je een programma hebt waarin je slechts 1 stukje mex-code wilt debuggen, dien je eerst een matlab breakpoint te zetten net voor het oproepen van deze mex-code code dbstop cascade_detect at 35 code waarbij cascade_detect de functie is en 35 de lijnnummer 5. Run je matlab-code tot het breakpoint bereikt is code cascade_demo code 6. In de shell die je krijgt zet je nu mex-debugging aan. Dit zorgt dat je in gdb-prompt zal komen van zodra mex-code gebruikt wordt (wat tevens de reden is dat we dit niet van het begin van het programma mogen aanzetten). code dbmex on code 7. Start de mex-functie, dit zorgt dat je in gdb terecht komt code coords = cascade(model, pyra.feat, projpyra.feat, rootscores, numrootlocs, pyra.scales, pyra.padx, pyra.pady, s); code 8. zet een breakpoint bij het begin van de functie mexFunction, wat de universele gateway vormt tussen matlab en de mex-code. code (gdb) break mexFunction code 9. doe “continue” om door te lopen tot het net aangemaakte breakpoint. code (gdb) continue Continuing. [Switching to Thread 0x7fffe3fff700 (LWP 6155)] ... code 10. Je hebt nu gdb in de mex-code zodat je op je gebruikelijke manier kan debuggen (source-code doorlopen, variabelen hun waarden opvragen, …)

TIP: het gebruik van TUI mode vereenvoudigd het debuggen door grafisch de broncode te laten zien die momenteel doorlopen wordt, deze kan aan/af gezet worden met de toetsencombinatie ctrl+x+a