Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

unmanaged code u dll i problem sa njim

[es] :: .NET :: unmanaged code u dll i problem sa njim

[ Pregleda: 512 | Odgovora: 3 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sstanko78
Stanislav Šimunec
Novi Sad

Član broj: 19139
Poruke: 302
*.eunet.yu.



Profil

icon unmanaged code u dll i problem sa njim26.08.2007. u 13:01

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
26.08.2007. u 13:01 

bjevta
Bratislav Jevtic
http://solair.eunet.yu/~bjevta
Kragujevac

Član broj: 5216
Poruke: 162
*.dynamic.sbb.co.yu.

Sajt: solair.eunet.yu/~bjevta


Profil

icon Re: unmanaged code u dll i problem sa njim26.08.2007. u 22:09
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.
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -Brian Kernighan
26.08.2007. u 22:09 

sstanko78
Stanislav Šimunec
Novi Sad

Član broj: 19139
Poruke: 302
82.117.201.*



Profil

icon Re: unmanaged code u dll i problem sa njim28.08.2007. u 09:06
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.
28.08.2007. u 09:06 

masetrt
Marko Djurovic
Programer, Omni-Explorer
Beograd

Član broj: 3129
Poruke: 210
195.252.119.*

Sajt: www.vast.com


Profil

icon Re: unmanaged code u dll i problem sa njim28.08.2007. u 10:14
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.

[Ovu poruku je menjao masetrt dana 28.08.2007. u 11:28 GMT+1]

[Ovu poruku je menjao masetrt dana 28.08.2007. u 11:29 GMT+1]
His majesty Grand Duke of Shumadija and Western Pomoravlje
28.08.2007. u 10:14 

[es] :: .NET :: unmanaged code u dll i problem sa njim

[ Pregleda: 512 | Odgovora: 3 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.