[ Blue82 @ 19.03.2011. 14:07 ] @
Ima li neko konstruktivni predlog kako otkriti gresku u programu koji zna da se zakuca na 100% jednom u mesec dana, deset dana, a ponekad i 2-3 puta dnevno. Radi se o serveru na koji se kaci odredjeni broj ljudi i kada se desi odredjeni event u kome je propust sve stane. Nesto sumnjam da je stvar kod upita za sql ali samo pretpostavka nepotkrepljena icim.
Na osnovu iskustva vezanog za druge programe, ako bih ga pustio da radi u bas verziji a ne exe, to ne bi bilo dobro resenje posto tada program ne uspeva da odresi neke zahtevnije stvari i tada se pojavljuje veci broj nepostojecih gresaka kojih nema u exe verziji istog. Nemam ideju kako da dokucim gde nastaje problem.
[ vuchko.vuchko @ 19.03.2011. 17:29 ] @
Predpostavimo da ti se ukljuci neka beskonacna petlja

Napravi na serveru neki monitoring koji ce pratiti pristigle i poslate zapise , a u isto vrijeme prati i zauzetost procesora.... i sve to smjestaj u neki txt file , recimo.... E sad kad ti se CPU popne na 100% i tako provede recimo minut ili dva napravis da se to sve fino zatvori i obavjesti te o tome. Zatim odes u taj txt i analiziras zapise prije skakanja CPU na maximum.

Eto jedan predlog!
[ Blue82 @ 19.03.2011. 18:17 ] @
Nije to bas tako jednostavno, moze da se desi milion stvari. Imas pristigle poruke, slanje poruka, razbijanje pristiglih na manje, spajanje ako je stigla iz delova, onda svaki od ljudi na serveru moze slati neki svoj zahtev serveru kojih moze biti mali milion... Ne znam ni sta bih zapisivao a definitivno kad on skoci na 100% on je not responding i nece nista da upisuje i analizira :)
[ Marko_L @ 19.03.2011. 20:38 ] @
Pa ni ne treba da zapisuje ništa u trenutku kad se zakuca. Tebe zanima šta se desilo neposredno pre toga. Ako ne koristiš debug mode, nema drugog načina da otkriješ grešku osim da praviš log fajl. Za početak upisuj u log svaki ulazak u neku petlju i svaki izlazak iz iste, pošto je najverovatnije problem u nekoj beskonačnoj petlji. Ako nije to, onda počni da loguješ i druge stvari, odnosno beleži pozivanje svake procedure, prosleđenih parametara i tako to.
[ Blue82 @ 19.03.2011. 22:50 ] @
Znaci Marko ne postoji neki "ozbiljniji nacin/program" za to? Ovako bi moglo da potraje :) Nekad se desi 2 puta dnevno nekad se ne desi po mesec dana a i nisam bas siguran sta bih to sve trebao zapisivati. Zamisli sada nadjem usao u neku petlju i nije izasao e sad zasto nije izasao.... Mozda cu 100x proci kroz nju i izaci ce bez problema a 101 put ce se nesto desiti sto mi mozda ni ne pada na pamet dok se ne desi.
[ Marko_L @ 20.03.2011. 02:55 ] @
Pa nema tu ozbiljan i neozbiljan način. Svaki način koji te dovede do rešenja problema je dobar. Pitanje je samo šta je najbolje u konkretnoj situaciji. Generalno, uvek postoje neke zakonitosti koje dovode do pojave grešaka/problema u aplikacijama, a te zakonitosti su nekada očigledne i lako se mogu reprodukovati, a nekada naizgled nema razloga da dolazi do greške, ali do nje ipak dolazi i teško je ustanoviti kada i zašto se to dešava. U svakom slučaju, jednom kada ustanoviš kada se greška javlja i koji koraci su potrebni da se greška reprodukuje, startuješ lepo aplikaciju iz VB-a u debug modu, postaviš breakpointe na kritične tačke i onda ponoviš te korake prateći kod, dok ne ustanoviš gde je greška. Međutim, kada je situacija takva, kao u tvom slučaju, da se greška ne javlja stalno i ne znaš tačno kako da je reprodukuješ, već se javlja sporadično i u naizgled različitim uslovima, onda nema druge nego praćenje. E sad, to praćenje možeš da izvedeš tako što ćeš startovati aplikaciju u debug modu i buljiti u kod sve vreme dok ne naiđeš na grešku, što može da ti oduzme puno vremena, jer kako sam kažeš, problem se ponekad javi tek posle mesec dana ili možeš, što je u tvom slučaju mnogo elegantnije rešenje, da napraviš log fajl i da pustiš aplikaciju da radi dok se ne javi problem, a onda pogledaš log fajl, obeležiš ono što misliš da je bitno i pustiš ponovo program da radi. Kada se opet desi problem, ponovo pogledaš log fajl, uporediš sa prethodnim i tražiš određene zakonitosti. Recimo, ako se oba puta problem desi zbog zaglavljivanja u istoj petlji, sa velikom dozom sigurnosti možeš zaključiti da je problem upravo u toj petlji i onda barem znaš šta treba da gledaš.
[ Blue82 @ 20.03.2011. 09:17 ] @
Ok hvala, probacu na tezi nacin.

Potajno sam se nadao da postoje mozda neki programi za monitoring, ali valjda sam previse futuristican. Hvala u svakom slucaju. Pozdrav!
[ vuchko.vuchko @ 20.03.2011. 17:28 ] @
Evo ti jos jedan laksi nacin kojim ces mozda resiti stvar.

na tom svom serveru napravis neki "Satus Label" u koji upisujes sta trenutno program radi npr.
kad primas podatke u njoj napises primam podatke, kad saljes pises saljem podatke i sl. Tako da u momentu kad ti se program "zaglavi" u toj labeli ce pisati u cemu je nastao problem.