Hollosi Information eXchange /HIX/
HIX CODER 1292
Copyright (C) HIX
2001-09-14
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: C++ forraskod ellenorzo (UNIX) (mind)  43 sor     (cikkei)
2 Visual C++ and OCX (mind)  24 sor     (cikkei)
3 Re: C++ forraskod ellenorzo (UNIX) (mind)  60 sor     (cikkei)

+ - Re: C++ forraskod ellenorzo (UNIX) (mind) VÁLASZ  Feladó: (cikkei)

> Felado :  [Hungary]
> Temakor: Re: C++ forraskod ellenorzo (UNIX) ( 15 sor )
> Idopont: Tue Sep 11 21:23:06 CEST 2001 CODER #1290
> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> Az rtin szerint  azt irta, hogy:
>
> >  Tud-e valaki olyan programot, amely átnyálazza a forrásokat és
> > különféle hibákat keres. Például malloc után nincs free, és egyéb
> > gyönyörűségek.
>
> Nagyon nem hiszem, hogy van olyan eszköz, ami fordítási időben ilyesmit
> mond neked. Egy kivétel eldobása például nagyon bekavarhat egy ilyen
> eszköznek. Viszont vannak sok pénzért, vagy akár ingyen is olyan
> programok, amik figyelik a mellécímzést, a memóriafolyást, stb. Az
> ElectricFence például általában kiszúrja a mellécímzést (ez ingyenes).

vagy ha
- nem ingyenes
- nem UNIX
- nem fordítási időben dolgozó
eszköz is jó, akkor a Borland C++ Builder 5.0-nak van egy CodeGuard-ja,
ami viszonylag jó, eléggé hatékonyen kiszúrja az ilyen disznóságokat.
Ha standard c++ programról van szó, akkor ez is használható a hibák
kiszűrésére.

szvsz:
Szerintem fordítási időben ilyen util soha nem lehet hatékony, mert bonyolultab
b
programoknál úgyis nem triviális hibák lépnek fel, amelyek a bemenő adatok
függvényében jelentkeznek vagy nem. Tehát fordítási időben gyakorlatilag
elkaphatatlan olyan hiba, ahol nem 1 függvényen belül van a malloc és a free.

Még had ugassak bele kéretlenül egy kicsit:
c++ programban én gyakorlatilag csak úgy használok malloc/new módszert,
hogy csinálok neki egy wrapper osztályt, ami a destruktorában automatikusan
elpusztítja szegény objektumot, amikor már nincs rá szükség. Többek által
használt objektumoknál reference counting technikával ugyanezt lehet elérni.
Ez igen nagy biztonságot ad, és gyakorlatilag a Java-s garbage collection-nak
felel meg, sokkal jobb hatékonysággal.
-- 
Józsi

+ - Visual C++ and OCX (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok!

Visula C++ -al fejleszte(ne')k egy alkalmazast, ami MS Acces adatbazisbol
dolgozik. A problema a kovetkezo:
Azon a gepen amelyiken fent van a VStudio, a forditas utan tokeletesen
mukodik az exe, viszont ha ezt atmasolom egy masik gepre, es ott futtatom,
akkor a szokseges dll-ek atmasolasa utan elindul a progi, de azok a
form-ok amelyekben DataGrid-et hasznalok, egyszeruen nem jonnek elo
(semmi hibauzenet).
Azt hiszem az lehet a gond hogy az msdgrid.ocx azon a rendszeren nincs
regisztralva.
Kerdesem, hogy hogyan tudom ezt megtenni? Marmint egy ocx file bejegyzeset
a regisztracios adatbazisba.
Arra gondoltam, hogy a fejleszto gep registry-eben megnezem hol van
hibatkozas dgrid-re es azokat a kulcsokat letrehozom a masik gepen is. De
ettol lenni kell valami elegansabb megoldasnak is. Azt is el tudtam volna
kepzelni, hogy a fejlesztokornyezetnek van valamilyen telepitesvarazsloja,
de nincs. Legalabbis nem talaltam.
Szoval most nem nagyon tudom atrakni a kesz progit egy olyan gepre amin
nincs Visual Studio telepitve.

	Bocs ha hosszu voltam.
			Valaszokat elore is koszi!
						PaZso!
+ - Re: C++ forraskod ellenorzo (UNIX) (mind) VÁLASZ  Feladó: (cikkei)

Halihó!

> vagy ha
> - nem ingyenes
> - nem UNIX
> - nem fordítási időben dolgozó
> eszköz is jó, akkor a Borland C++ Builder 5.0-nak van egy CodeGuard-ja,
> ami viszonylag jó, eléggé hatékonyen kiszúrja az ilyen disznóságokat.
> Ha standard c++ programról van szó, akkor ez is használható a hibák
> kiszűrésére.
  Nem lesz jó, mert UNIX környezetben fejlesztünk és próbálunk az olcsó
megoldások felé menni. Nem éri meg egy drága program, ha nem termeli ki
az árát...

> Szerintem fordítási időben ilyen util soha nem lehet hatékony, mert
> bonyolultabb programoknál úgyis nem triviális hibák lépnek fel, amelyek
> a bemenő adatok függvényében jelentkeznek vagy nem. Tehát fordítási
> időben gyakorlatilag elkaphatatlan olyan hiba, ahol nem 1 függvényen
> belül van a malloc és a free.
  Ehh... hülye példa volt a malloc-free, sokkal több hibás mellégépelés
fordul elő... Például a g++ szó nélkül kódot generál:
#include <stdio.h>

int main( )
  {
    int iError = -1;
    int iReturn = 2;
    if ( iError = 0 & iReturn < 0 )
      {
        return -1;
      }
    return 0;
  }
többszöri átnézésre sikerült felfedezni egy néhányszáz soros program
vége felé az ilyen jellegű mellégépeléseket, pedig az lclint rögtön
mondja:
:~ > lclint /home/nfsmount/andromeda/franko/proba.cpp
LCLint 2.5q --- 26 July 2000

/home/nfsmount/andromeda/franko/proba.cpp: (in function main)
/home/nfsmount/andromeda/franko/proba.cpp:7:10:
    Test expression for if is assignment expression:
  iError = 0 & iReturn < 0
  The condition test is an assignment expression. Probably, you mean to
use == instead of =. If an assignment is intended, add an extra
parentheses nesting (e.g., if ((a = b)) ...) to suppress this message.
(-predassign will suppress message)
/home/nfsmount/andromeda/franko/proba.cpp:7:10:
    Test expression for if not boolean, type int:
  iError = 0 & iReturn < 0
  Test expression type is not boolean or int. (-predboolint will
suppress
  message)

Finished LCLint checking --- 2 code errors found

  Szóval én ilyen kis problémákra szeretnék megoldásokat... :)
-- 
Frank O'Yanco - Auth Gábor -=- Mobil/SMS +36203494743 /+36303687792
Age of The Penguin -=- SuSE Linux 7.1 -=- http://andromeda.rgstudio.hu

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS