g++ tak tomu nechapem :D

Sekcia: Programovanie 06.12.2007 | 20:22
Avatar miso Gentoo   Používateľ
pri pisani som narazil na problem nakodil som kusok kodu ktory pri spusteni mi vyhadzuje chyby ale kamaratovi ide bez problemov a nechapem preco on ma verziu 4.2.2-4 mene pri
zadani g++ -v vyhodi Using built-in specs.
Target: x86_64-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --enable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.2 (Gentoo 4.1.2 p1.0.2)

Zdrojovy kod programu :
    • Re: g++ tak tomu nechapem :D 06.12.2007 | 21:19
      Avatar Frantisek Klabzuba Debian  Používateľ
      aku chybu vypise?
      • Re: g++ tak tomu nechapem :D 06.12.2007 | 21:25
        Avatar miso Gentoo   Používateľ
        ked sa dostane na Osoby::vypis()

        tak chyba nastava pri cikle while
        nazov chyby :Segmentation fault
        • Re: g++ tak tomu nechapem :D 06.12.2007 | 22:21
          WlaSaTy   Návštevník
          pri kompilovaní alebo pri spustení výsledného programu?

          škoda že ten kód nemôžeme posúdiť.
          • Re: g++ tak tomu nechapem :D 06.12.2007 | 22:34
            Avatar miso Gentoo   Používateľ
            pri spustani programu a ten kod si mozes pozriet ved je v prvom prispevku link ak ho chces pozriet
            • Re: g++ tak tomu nechapem :D 06.12.2007 | 22:49
              WlaSaTy   Návštevník
              sorry, reagovali sme an tie ochrany z upnito. este by tam mohli urobit premium account a bolo by to vyuzivane ako rapid share.
              • Re: g++ tak tomu nechapem :D 06.12.2007 | 22:55
                Avatar miso Gentoo   Používateľ
                Tak tu mas zdrojak ;-))#include <iostream>
                #include <string>
                using namespace std;
                class Osoba{
                string meno,
                priez,
                adresa,
                tel_cis,
                vek,
                mail;
                public:
                Osoba();
                void pridaj();
                void vypis();
                string vrat(int co);
                Osoba *dal,*pred;
                };
                Osoba::Osoba(){
                dal=NULL;
                pred=NULL;
                }

                string Osoba::vrat(int co){
                switch(1){
                case 1:return meno; break;
                case 2:return priez; break;
                case 3:return adresa; break;
                case 4:return tel_cis; break;
                case 5:return vek; break;
                case 6:return mail; break;
                default: return "";
                }
                return "";
                }
                void Osoba::pridaj(){
                cout<<"Zadaj meno:";
                cin>>meno;
                cout<<"Zadaj priezvisko:";
                cin>>priez;
                cout<<"Zadaj adresu";
                cin>>adresa;
                cout<<"Zadaj telefone cislo:";
                cin>>tel_cis;
                cout<<"Zadaj vek";
                cin>>vek;
                cout<<"Zadaj mail:";
                cin>>mail;
                }
                void Osoba::vypis(){
                cout<<"Meno: "<<meno<<"\t"<<"Priezvisko: "<<priez<<endl;
                cout<<"Vek: "<< vek<<endl;
                cout<<"Adresa: \n\t"<<adresa<<endl;
                cout<<"Telefone cislo: "<<tel_cis<<endl;
                cout<<"Email: "<<mail<<endl;
                }
                class Osoby: public Osoba {
                class Osoby: public Osoba {
                private:
                Osoba *zac;
                public:
                Osoby();
                void pridaj();
                void vypis();
                void utriet();
                };

                Osoby::Osoby(){
                zac=NULL;
                }
                void Osoby::pridaj(){
                Osoba *pridavana;
                Osoba *pom;
                pridavana = new Osoba;
                pridavana->pridaj();
                if(zac==NULL){
                zac=pom;
                }
                else{
                pom=zac;
                #ifdef test
                cout<<"pridelil som pom=zac\n";
                if(pom->dal==NULL) cout<<"pom->dal ma hodnotu NULL\n"; // Pri tomto mi to pada
                else cout<<"pom nemalo hodnotu NULL\n";
                #endif
                while(pom->dal != NULL){
                #ifdef test
                static int i;
                cout<<"vetva while urobena po:"<<i++<<" krat\n";
                #endif
                pom=pom->dal;
                }
                pridavana->pred=pom;
                pom->dal=pridavana;
                }
                }
                void Osoby::vypis(){
                Osoba *pom;
                cout << "zac vypisu\n";
                pom=zac;
                cout <<"pridelil\n";
                cout<<"\n\n";
                while(pom!=NULL){
                pom->vypis();
                pom=pom->dal;
                }
                }
                void Osoby::utriet(){
                cout<<"\nNa tejto casti sa este pracuje ;-))\n";
                }
                int main(){
                Osoby pom;
                pom.pridaj();
                pom.pridaj();
                pom.vypis();
                return 0;
                }
                • Re: g++ tak tomu nechapem :D 06.12.2007 | 23:01
                  WlaSaTy   Návštevník
                  skompiluj to s debug symbolmi a na core poštvi gdb, backtrace. alebo použi nejaké prostredie so zabudovaným debugerom (žeby rhide alebo eclipse?-). ja som tú chybu nenasimuloval.
                  • Re: g++ tak tomu nechapem :D 07.12.2007 | 00:28
                    misolax   Návštevník
                    co su tie debug simboly ?? a ako to mam skompilovat s nimi???
                    • Re: g++ tak tomu nechapem :D 07.12.2007 | 09:16
                      Avatar borg Fedora  Administrátor
                      aby si mohol debugovat. parameter -g pridaj pri preklade
                      • Re: g++ tak tomu nechapem :D 07.12.2007 | 09:55
                        Avatar miso Gentoo   Používateľ
                        Aj ked to skompilujem g++ -g zdrojak -o prog tak to nejde
                        :D ale stale tomu nechapem
                        • Re: g++ tak tomu nechapem :D 07.12.2007 | 09:58
                          Avatar borg Fedora  Administrátor
                          gdb ./prog
                          neviem potom v com je problem
                        • Re: g++ tak tomu nechapem :D 07.12.2007 | 11:11
                          Avatar Miroslav Bendík Gentoo  Administrátor
                          A ked to spustas v gdb nezabudni po pade programu zadat bt aby to zobrazilo kde to padlo.
                          • Re: g++ tak tomu nechapem :D 07.12.2007 | 13:07
                            Avatar miso Gentoo   Používateľ
                            tu je vypis gdb
                            (gdb) run
                            Starting program: /home/misolax/prog
                            Zadaj meno:misolax
                            Zadaj priezvisko:kusd
                            Zadaj adresusd
                            Zadaj telefone cislo:sd
                            Zadaj veksd
                            Zadaj mail:sd
                            Zadaj meno:lool
                            Zadaj priezvisko:sd
                            Zadaj adresusd
                            Zadaj telefone cislo:sd
                            Zadaj veksd
                            Zadaj mail:sd

                            Program received signal SIGSEGV, Segmentation fault.
                            0x00000000004011e6 in Osoby::pridaj (this=0x7fff3b09f490) at Projekty/C++/db_serve-clijent/osoba.cpp:84
                            84 while(pom->dal != NULL){
                            • Re: g++ tak tomu nechapem :D 07.12.2007 | 13:19
                              Avatar borg Fedora  Administrátor
                              tak si tam daj breakpoint, krokuj a pozeraj ci su premnne inicializavane (maju spravnu hodnotu) spravne
                              • Re: g++ tak tomu nechapem :D 07.12.2007 | 13:29
                                Avatar miso Gentoo   Používateľ
                                takze som si spustil gdb zadal mu
                                commands breakpoints a potom run ./prog
                                (gdb) run ./prog
                                The program being debugged has been started already.
                                Start it from the beginning? (y or n) y
                                Starting program: /home/misolax/prog ./prog
                                Zadaj meno:misolax
                                Zadaj priezvisko:ksdf
                                Zadaj adresusdf
                                Zadaj telefone cislo:sdf
                                Zadaj veksdf
                                Zadaj mail:sdf
                                Zadaj meno:linuxos.sk
                                Zadaj priezvisko:ksdf
                                Zadaj adresusdf
                                Zadaj telefone cislo:sdf
                                Zadaj veksdf
                                Zadaj mail:sdf

                                Program received signal SIGSEGV, Segmentation fault.
                                0x00000000004011e6 in Osoby::pridaj (this=0x7fff8305d810) at Projekty/C++/db_serve-clijent/osoba.cpp:84
                                84 while(pom->dal != NULL){
                                • Re: g++ tak tomu nechapem :D 07.12.2007 | 13:48
                                  Avatar borg Fedora  Administrátor
                                  vid moj prispevok vyssie. kludne si daj aj na zaciatok main() breakpoint, ten program neni dlhy
                                  • Re: g++ tak tomu nechapem :D 07.12.2007 | 13:55
                                    Avatar miso Gentoo   Používateľ
                                    do zdrojoveho kodu ?? alebo dke ked to dam do zdrojaku tak mi to neskompiluje
                                    • Re: g++ tak tomu nechapem :D 07.12.2007 | 13:58
                                      Avatar borg Fedora  Administrátor
                                      v debuggery
                                      • Re: g++ tak tomu nechapem :D 07.12.2007 | 14:04
                                        Avatar miso Gentoo   Používateľ
                                        ale ako to tam mam zadat ja som s nim vzivote nerobil :D
                                        (gdb) main() breakpoint,
                                        Undefined maintenance command: "() breakpoint,". Try "help maintenance".
                                        (gdb) breakpoint
                                        Undefined command: "breakpoint". Try "help".
                                        (gdb) run ./prog main() breakpoint
                                        Starting program: ./prog main() breakpoint
                                        No executable file specified.
                                        Use the "file" or "exec-file" command.
                                        (gdb)
                                        • Re: g++ tak tomu nechapem :D 07.12.2007 | 14:15
                                          Avatar borg Fedora  Administrátor
                                          skus si prejst clanky na roote:
                                          http://www.root.cz/clanky/gdb-pro-normalni-lidi/
              • Re: g++ tak tomu nechapem :D 06.12.2007 | 23:10
                open source   Návštevník
                ten zdrojak mohol dat na http://pastebin.org/