|
| GDB opfører sig skørt med mit C++-p Fra : Steffen Fischer |
Dato : 11-08-03 00:53 |
|
Hej alle
Jeg har i forbindelse med et c++-projekt leget lidt med GVD (grafisk
front-end til GDB), men fandt ud at at jeg i en enkelt fil ikke kunne
indsætte fungerende breakpoints. Da jeg heller ikke kunne gøre det i GDB
fra konsollen, har jeg skåret kraftigt ned på koden, og stadig beholde
problemet. Resultatet er blevet:
<start kode>
=== test.cpp: ====
#include "reader.h"
int main(int argc, char *argv[]) {
ReaderTing map_reader = ReaderTing();
}
Reader::Reader() {
int i = 0;
i++;
}
=== reader.h: ====
#ifndef READER_H
#define READER_H
class Reader {
public:
Reader();
};
#endif
<slut kode>
Programmet compiles med: g++ -g -Wall test.cpp
Efterfølgende startes GDB med: gdb a.out
Hvis jeg nu eks. vil lave et breakpoint i linie 8 (int i = 0;), vil jeg
så skrive "b 8" i GDB-promten (kald . Hvis jeg herefter kører programmet
med "r" breakes der ikke.
Jeg kan godt få den til at stoppe ved eks. "b Reader::Reader()", men det
er jo ikke helt nok. Jeg har også forsøgt at finde på et lidt mindre
almindelige navn end "reader", men uden held.
Hvad er det jeg gør galt? For jeg kan ikke umiddelbart indse det.
Desuden kan jeg underligt nok ikke længere se noget af ovenstående kode
i GVD, hvilket naturligvis også er et problem.
Jeg kører med debian unstable (men er også tilstede på min ældre debian
testing). Versionerne af de omtalte programmer:
g++ (GCC) 3.3.1 (Debian)
GNU gdb 5.3.90_2003-08-01-cvs-debian
GVD version 1.2.6 (20020522)
Håber at nogen kan hjælpe, for det er nemlig lidt træls :)
/Steffen
| |
Michael Wojciechowsk~ (12-08-2003)
| Kommentar Fra : Michael Wojciechowsk~ |
Dato : 12-08-03 09:03 |
|
On Mon, 11 Aug 2003 01:53:05 +0200, Steffen Fischer
<steffen_fischer@ofir.dk> wrote:
> Programmet compiles med: g++ -g -Wall test.cpp
Hjælper det, hvis du opretter reader.cpp hvori du placerer din
implementation?
Jeg gør det normalt, og har ikke lagt mærke til at gvd/gdb har nægtet
at rette sig efter mine breakpoints.
> Jeg kører med debian unstable (men er også tilstede på min ældre
> debian testing). Versionerne af de omtalte programmer:
> g++ (GCC) 3.3.1 (Debian)
> GNU gdb 5.3.90_2003-08-01-cvs-debian
> GVD version 1.2.6 (20020522)
Jeg bruger både stable gvd og den fra testing.
--
Michael Wojciechowski
With every light is born a shadow.
| |
Steffen Fischer (12-08-2003)
| Kommentar Fra : Steffen Fischer |
Dato : 12-08-03 11:02 |
|
>
> Hjælper det, hvis du opretter reader.cpp hvori du placerer din
> implementation?
Nej, det gør det desværre ikke.
> Jeg gør det normalt, og har ikke lagt mærke til at gvd/gdb har nægtet
> at rette sig efter mine breakpoints.
>
Jeps, det plejer jeg også, men i vedlagte kode har jeg forsøgt at skære
så meget som muligt fra, samtidig med at problemet fortsat er der.
Jeg synes altså at det er meget skørt :-/.
En (tredje) skør ting er hvis jeg sætter breakpoints på følgende to måder:
(gdb) b 7
Breakpoint 1 at 0x80483f6: file tester.cpp, line 7.
(gdb) b ReaderTing::ReaderTing()
Breakpoint 2 at 0x8048410: file tester.cpp, line 7.
Angiveligt bliver de to breakpoints sat i samme linie, men adresserne er
forskellige... Har det nogen betydning? Det skal lige nævnes at
programmet stopper ved 2, men ikke 1.
/Steffen
| |
Michael Wojciechowsk~ (12-08-2003)
| Kommentar Fra : Michael Wojciechowsk~ |
Dato : 12-08-03 12:00 |
|
On Tue, 12 Aug 2003 12:02:07 +0200, Steffen Fischer
<steffen_fischer@ofir.dk> wrote:
> Jeg synes altså at det er meget skørt :-/.
Du kunne spørge i dk.edb.programmering.c. :)
--
Michael Wojciechowski
With every light is born a shadow.
| |
Steffen Fischer (12-08-2003)
| Kommentar Fra : Steffen Fischer |
Dato : 12-08-03 22:18 |
|
Michael Wojciechowski wrote:
> Du kunne spørge i dk.edb.programmering.c. :)
>
Hehe, det er hermed gjort. Så håber jeg, at der er nogle kloge hoveder
derovre... dermed ikke sagt at der ikke er det her .
/Steffen
| |
|
|