c ++ - Sådan skriver du en simpel debugger?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne forbinde min kompilerede objektkode til c ++ -koden, og derefter kontrollere, om en bestemt kode kode blev udført.
Sådan gør du de to ting?


Hvis forklaringen ikke er enkel (jeg vedder ikke, det er det ikke), kan nogen i det mindste pege på nogle websider, der forklarer, hvordan man gør det?


Jeg forstår at løsningen er anderledes for forskellige platforme, men jeg er interesseret i hvordan det gøres på Windows og Linux (Linux til starten)

Bedste reference


Hvis du vil vide, hvordan det er gjort,



  • gdb er open source

  • ptrace syscall skal komme i gang,

  • libunwind-ptrace



dette er en god artikel ved hjælp af ptrace [3] [4] [5]

Andre referencer 1


Jeg formoder, at du virkelig ikke har brug for en debugger, men en profiler. Jeg kan godt lide callgrind på http://valgrind.org/docs/manual/cl-manual.html, som har et godt grafisk miljø på http://kcachegrind .sourceforge.net/. [6] [7]


For at prøve at bruge


$ valgrind --tool=callgrind ./myapp
$ kcachegrind callgrind.out.xxx

Andre referencer 2


I din kommentar siger du: 'Jeg vil bare indsamle oplysninger om, hvordan man kontrollerer, hvilke metoder/funktioner der udføres under udførelsen, og hvor mange gange'.


Hvis det er det du vil opnå, så brug en profiler som gprof.


Kompilér dit program med -g -pg, og når dit program er færdigt, vil det oprette en fil, der kan behandles af gprof for at vise dig, hvad du vil.