.[ ČeskéHry.cz ].
Visual C++ release build a crash
Jdi na stránku Předchozí  1, 2, 3  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 30. červen 2010, 09:28:37    Předmět: Odpovědět s citátem

if.then - mnohem lepsi je predchazet temto situacim pomoci assertu - mam kod v DEBUG verzi plny assertu na to co musi platit - jakmile to neplati (treba prijde nenulovy pointer a ma byt NULL hned mi to hlasi)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
if.then



Založen: 13. 04. 2008
Příspěvky: 579

PříspěvekZaslal: 30. červen 2010, 09:58:29    Předmět: Odpovědět s citátem

Proti gustu žádný dišputát, ale já osobně mám radši menší a hezčí kód. A asserty navíc nechrání proti všemu (dobře, release build taky ne, ale...)
_________________
For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 30. červen 2010, 10:08:34    Předmět: Odpovědět s citátem

proti chybam se musi bojovat vsemi moznymi prostredky - nikdy nemas vsechno podchycene, ale cim vic toho podchytis, tim mene stresu a prace ti dela nasazeni a odladeni nove verze

mezi zaklady patri
-- vhodne komentovany kod (ten casto naznaci ze je nekde chyba - protoze logicky komentar nesedi ke kodu) - je treba ale komentovat 'proc' to delam, ne 'co' delam
-- asserty - hlidat si vstupy do funkci a vystupy z nich - neocekavany vstup/vystup poukazuje na chybu
-- automatizovane buildovani a testovani nekolikrat denne
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 30. červen 2010, 14:39:17    Předmět: Odpovědět s citátem

Co bych poradil já, už asi všichni víte (radím to vždycky). Smile
BTW neznáte nějaký assert, který by jen vypsal warning, ale neukončil program?
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 30. červen 2010, 14:52:41    Předmět: Odpovědět s citátem

@frca - nvm - MSVS haze asserty, pres ktery je moznost skocit do VS primo do debugu - to ti nestaci?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 30. červen 2010, 15:06:33    Předmět: Odpovědět s citátem

Mně se líbí právě asserty v gtk, které sice vypíšou warning v assert formátu, ale program jede dál, jako by se nechumelilo. Stahovat a procházet zdrojáky gtk se mi jaksi nechce, ale asi budu muset...
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 30. červen 2010, 15:22:42    Předmět: Odpovědět s citátem

to mi prave nesedi - porusenej assert chce okamzite zjistit proc - jak to budes zpetne zjistovat z logu?

takhle mi to skoci, okamzite debuguju a reknu si - 'aha ja kokot' - opravim a jede se znova

ty warningy muzou taky dopadnout tak ze je zacnes ignorovat - nic te nenuti to opravit, protoze te to nebrzdi ve vyvoji
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 30. červen 2010, 15:45:28    Předmět: Odpovědět s citátem

Tak gtk používá g_return_if_fail(expr) (makro z glibu), které ale má bohužel ještě ten efekt, že se vrátí z aktuální funkce. Jinak já nic nezjišťuju zpětně z logu, ale vidím to hned v terminálu. Warningy se vždy snažím opravovat (moje poslední aplikace žádné nevypisuje).
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Pavel



Založen: 29. 07. 2007
Příspěvky: 54
Bydliště: Litovel

PříspěvekZaslal: 30. červen 2010, 15:53:01    Předmět: Odpovědět s citátem

frca napsal:
neznáte nějaký assert, který by jen vypsal warning, ale neukončil program?


Myslis neco jako?
kód:

#define MY_ASSERT(v) if (!(v)) { ... }
Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 30. červen 2010, 16:04:27    Předmět: Odpovědět s citátem

Jo, něco takového, ale standardizovaného, pokud to existuje.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 30. červen 2010, 16:10:53    Předmět: Odpovědět s citátem

frca napsal:
Tak gtk používá g_return_if_fail(expr) (makro z glibu), které ale má bohužel ještě ten efekt, že se vrátí z aktuální funkce. Jinak já nic nezjišťuju zpětně z logu, ale vidím to hned v terminálu. Warningy se vždy snažím opravovat (moje poslední aplikace žádné nevypisuje).


to je putna jestli to ctes z logu nebo to mas v terminalu - jak to pak navodis znovu tu situaci?

IMHO je mnohem lepsi v situaci, kdy neplati nejake pravidlo, ktere platit ma, mit moznost ihned videt watch a call-stack a chybu odstranit nebo pravidlo opravit
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Pavel



Založen: 29. 07. 2007
Příspěvky: 54
Bydliště: Litovel

PříspěvekZaslal: 30. červen 2010, 17:47:32    Předmět: Odpovědět s citátem

frca napsal:
Jo, něco takového, ale standardizovaného, pokud to existuje.
Proc? Udelej si presne sam co potrebujes...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 30. červen 2010, 20:44:31    Předmět: Odpovědět s citátem

rezna: Určitě jsou situace, kdy je to, co popisuješ, výhodné.
Zároveň ale se často hodí vypisovat i warningy, aniž by aplikace hned padala.
Přiznám se, že jsem zatím s assertem nelaboroval natolik, abych věděl, jak se s ním poperou gdb a valgrind.
Mám dotaz k visualku: Když to vyhodí assert a zapne debugger, lze pak v programu pokračovat? (Tzn. rozjet ho od assertu dál.) Tipoval bych, že jo.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 30. červen 2010, 21:27:49    Předmět: Odpovědět s citátem

No, když dáš F5, tak to pokračovat nebude. Ale možná se dá nějak zmlátit, aby to šlo.

Jinak podle mě to, co chceš, je prachsprosté logování.
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 1. červenec 2010, 08:00:13    Předmět: Odpovědět s citátem

@Quiark - prachsproste logovani to neresi - proto to je pres to skaredy volani z glibu.

pokud neprojde assert je neco spatne a nasledujici kod nejspis zarucene spadne.

jako treba tu
kód:
NON_NULL_PTR(p); p->Method()


proto taky nejde pokracovat po assertu ve visualku.

assert neni warning, ze je mozna neco ne uplne dobre, assert je jasna chyba, ktera se musi vyresit
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3  Další
Strana 2 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna