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
|
|