[ wex-alpha @ 07.03.2011. 08:10 ] @
Pozdrav,

Imam veliki problem. Aplikacija koju pokrenema pod okriljem CS 2010, znaci pod procesom vshost.exe, radi kako treba.

Ali kada pokrenem splikaciju samu od sebe, drugaciji rezultati. Nema greske ni u jednom slucaju, samo dok radi unutar VS2010 kalkulacija je dobra, ali sama od sebe... brlja :(

Aplikacija je 32x/NET 2.0. OS je Windows 7 64bit.

Kako ovo rijesiti?
[ Mihajlo Cvetanović @ 07.03.2011. 09:28 ] @
Za početak tako što ćeš opisati šta aplikacija radi, kako radi, i kako brlja. A mogao bi da staviš i neki deo koda za koji smatraš da je kritičan za tvoj problem.
[ wex-alpha @ 07.03.2011. 09:40 ] @
Aplikacija kontrolise eksterni uredjaj.

Kada uredjaj ispune neke uslove, aplikacija treba da reaguje adekvatno. Aplikacija treba da se zaustavi te da objavi poruku na ekranu. Nakon potvrde korisnika, aplikacija ponovo pokrece uredjaj slanjem odredjenih komandi sa parametrom.

Sve se to i desava, samo sto salje netacne komande. Da stvar bude cudnija, salje ispravne komande ali pogresno inizijalizovane. Uredjaj obavi ono sto mu se posalje, ali pogresno.

Ne sumnjan ni na jedan segment u kodu :( Nemam jednu metodu koja to obavlja, tu je dosta klasa i objekata koji su povezani, tako da moze postojati dosta mjesta gdje se desava "korupcija".

Nazalost, moramo bih kompletan source postati ovdje, ali to ne smijem.

U svakom slucaju ovaj moj problem je "genericke " prirode, tako da se i nisam nadao detaljnom odgovoru.

Vise me je zanimalo da li se ovo vec nekme prije desavalo i na koji nacin se borio sa problemom?



[ Mihajlo Cvetanović @ 07.03.2011. 10:07 ] @
Da li možeš da debaguješ aplikaciju? Pretpostavljam da ne jer onda bi i sam našao problem, ali možda misliš da ne možeš pa nisi ni probao. Recimo da ne možeš.

Treba da ispisuješ kretanje podataka u log fajl. Pre nego što bilo šta pošalješ uređaju ispiši taj niz znakova u log fajl. Ako se taj niz znakova konstruiše na neki komplikovan način, onda napiši u log fajl komponente tog niza u trenutku kad se te komponente stvaraju. Cilj nije da pronađeš grešku iz prve, nego da u svakom koraku dodaješ još logovanja, i budeš sve bliže otkrivanju greške. Verovatno imaš neku neinicijalizovanu promenljivu, koja u jednom slučaju ne pravi problem, ali se otkriva u drugom slučaju.
[ Toxter @ 07.03.2011. 10:11 ] @
Ovo me malo podseca na vreme kad sam radio u C++ pa je bilo razlike u Debug i Release modu -u Debug modu su se neke promenjive inicijalizovale na Default vrednosti.
Ne znam da li ovakvih problema moze biti u .NET-u jer kompajler javlja compile error za koriscenje neinicijalizovanih promenjivih.

Da ne koristis mozda neke drajvere i kompajliras Release za AnyCPU pa ti automatski pokrece 64bit process na 64bit Windows-u a mozda drajveri za taj uredjaj nisu 64bit kompatibilni?

Pozdrav
[ wex-alpha @ 07.03.2011. 10:59 ] @
Projekat je 32x, jer radi na XP32. Nemam ni jedno upozorenje u vezi varijabli. Bilo ih je par koje nikada nisu koristene, ali sam ih uklonio.

Projekat je cist koliko je u mojoj moci. Jedino da probam sa logovanjem da vidim sta se kada desilo.

[ Boško @ 07.03.2011. 17:37 ] @
Da li ti se aplikacija izvršava u jednoj niti ili ih imaš više?

Ako u aplikaciji koristiš tajmere onda je sigurno da imaš više niti (tajmeri rade u zasebnim nitima) i problem je najverovatnije u njihovoj sinhronizaciji.

Postoji više načina kako se to rešava. Proguglaj malo, pa u zavisnosti od tvog koda vidi koji ti najviše odgovara.
[ wex-alpha @ 07.03.2011. 19:55 ] @
Da, imam jedan tajmer. Hvala na hintu :)

Odoh traziti da vidim kako mi to moze zadavati probleme