Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 3.498 pregleda

Najnovija ↓

unmanaged code u dll i problem sa njim 26.08.2007. u 14:01 · pre 233 meseca #1
Pravim jednu aplikaciju koja koristi dll pisam u c/c++ -u. Znači pozivam unmanaged code iz .net-a (oni su napravili jedan wraper).
Aplikacija je gotova 90%. Pojavio se problem. aplikacija periodično poziva web service. Web Service instancira objekte iz dll-a. Posle nekog vremena 5-6 sati rada WebService potpuno prestaje da odgovara. Pomoću loga sam otkrio da web service prestane da odgovara u dva slučaja:

1) pri instancirranju objekta iz dll-a
2) pri pozivu jedne metode iz dll-a (Login)

Ja mislim da u tom dll-u postoji memory leak ili bug.
Pitanje:
1) kako da otkrijem kakv je to bug ?
2) kako da handle-ujem taj bug (koji se nalazi negde u unmanaged code-u)


Taj dll se koristi za komunikaciju sa specijalizovanim serverom
Re: unmanaged code u dll i problem sa njim 26.08.2007. u 23:09 · pre 233 meseca #2
ajd, malo, da teoretišem pred spavanje. znam da neću biti od koristi ali:
1. ako dll treba samo da dobaci podatke iz web servisa, bolje napiši svoju rutinu. nije komplikovano a nećeš morati da loviš gremline.
2. prati utrošak memorije aplikacije/dll-a da bi potvrdio da li je memory leak. mada, slaba vajda od toga, i ako jeste, nećeš biti puno pametniji.
3. izoluj problem. napravi test aplikaciju koja samo poziva taj dll i loguje se/poziva web service. Konzolna aplikacija, loguj šta se može i neka radi ceo dan ili duže.
4. kontaktiraj autora dll-a i pitaj za savet. ovo bi trebalo da uradiš pre prethodnih tačaka.
Potpis
Acta, non verba!
Re: unmanaged code u dll i problem sa njim 28.08.2007. u 10:06 · pre 233 meseca #3
Probao sam sve to. Napravio sam WinForms aplikaciju.
Otkrio sam da klase koje instanciram iz tog dll-u nemaju
destruktor (Dispose) metod. Znači konstanto zauzimaju memoriju
i to unmanaged memoriju (To sam otkrio pomoću profilera)

Postoji li način da nekako oslobodim memoriju koju zazuzimaju
ti objekti? Na google nisam ništa našao.
Re: unmanaged code u dll i problem sa njim 28.08.2007. u 11:14 · pre 233 meseca
izmenjeno 2 puta, poslednji put masetrt 28.08.2007. u 11:29
  1. masetrt28.08.2007. u 11:29zapis iz teksta poruke
  2. masetrt28.08.2007. u 11:28zapis iz teksta poruke
#4
Koliko ja znam u tom dll-u mora da postoji funkcija (ili pak neka metoda klase) koja ce oslobadjati memoriju. Opet konsultuj autora ili dokumentaciju. Za COM objekte popstoji Marshal.FreeCoTaskMem(IntPtr). Mozda u Marshal klasi ima nesto i za releasovanje pa je prouci.
Potpis
His majesty Grand Duke of Shumadija and Western Pomoravlje
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme