abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 00:33 | Zajímavý článek

Správce nástroje curl Daniel Stenberg na GitHubu průběžně vytváří svou novou knihu Uncurled, v níž shrnuje své dlouhodobé zkušenosti s údržbou open-source projektu: od odpozorovaných pouček po vtipné a ne až tak vtipné příklady e-mailů od uživatelů.

Fluttershy, yay! | Komentářů: 6
včera 00:22 | Nová verze

Byla vydána nová major verze 25.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.

Ladislav Hagara | Komentářů: 3
včera 00:11 | Nová verze

Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript a TypeScript, bylo vydáno ve verzi 1.22. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
18.5. 18:22 | Nová verze

Společnost Red Hat oznámila vydání Red Hat Enterprise Linuxu (RHEL) 9.0. Vedle nových vlastností a oprav chyb přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 7
18.5. 14:00 | Komunita

Lars Knoll oznámil, že po 25 letech v ekosystému Qt, z toho 22 let pracující pro různé společnosti vlastnící Qt, odchází ze společnosti The Qt Company do malého norského startupu.

Ladislav Hagara | Komentářů: 7
18.5. 13:22 | Zajímavý projekt

Na Kickstarteru běží kampaň na podporu mini ITX desky Turing Pi 2 Cluster Computer. Vložením 4 výpočetních modulů, podporovány jsou Raspberry Pi 4, Turing RK1 a Nvidia Jetson, lze získat 4uzlový cluster. Cena desky je 219 dolarů.

Ladislav Hagara | Komentářů: 2
18.5. 10:00 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 198. brněnský sraz, který proběhne v pátek 20. května tradičně od 18 hodin v Pivovarské restauraci Moravia.

Ladislav Hagara | Komentářů: 2
18.5. 07:00 | Zajímavý software

Byla vydána nová verze 0.25 herního enginu Fyrox, původně rg3d. Přehled novinek s kódy, náhledy i videi v příspěvku na blogu.

Ladislav Hagara | Komentářů: 1
18.5. 00:11 | Nová verze

Multiplatformní audio přehrávač Qmmp (Wikipedie) byl vydán ve verzi 2.1.0. Z novinek lze zmínit například podporu XDG Base Directory Specification.

Ladislav Hagara | Komentářů: 0
17.5. 23:22 | Komunita

Letošní konference LibreOffice proběhne 28. září až 1. října v Bolzanu. The Document Foundation hledá přednášející.

Zdeněk Crhonek | Komentářů: 0
Na sociálních sítích nebo jiných webových diskuzích vystupuji pod
 (59%)
 (16%)
 (25%)
Celkem 286 hlasů
 Komentářů: 26, poslední dnes 15:03
Rozcestník


Dotaz: C dohledání memory leaks

5.5. 14:20 MilanC | skóre: 15
C dohledání memory leaks
Přečteno: 503×
Ahoj,

potřeboval bych svůj výtvor nějak ověřit a být si jistý, že neobsahuje žádné memory leaks. Beží na embedded mips zařízení, proto využívám cross kompilace. V samotném mém programu je jedinný malloc a realloc, takže o to mi až tak nejde. Jde mi hlavně o využívané funkce ze sdílených knihoven - typicky libcurl a json-c.

Pokoušel jsem se tam dostat valgrind a to se mi i povedlo, nicméně jej nemohu použít z důvodu nedostatku RAM. Zkusil jsem nyní přikompilovat do projektu memwatch, ale když nad tím přemýšlím, podle mého mi to asi ve věci využívaných sdílených knihoven příliš nepomůže?

Můj program je hardwarově závislý, takže využívá i knihovny pro přístup k danému HW. Proto nevidím moc reálné to ladit někde jinde, kde bude více RAM, třeba v nějakém emulátoru. Samozřejmě bych si ty hw knihovny mohl namockovat, ale takové ověření by pak postrádalo trochu smysl a opravdu bych možná ověřil jen ten curl a json a nic víc.

Nemáte nějaký nápad nebo tip na nástroj, který by mi s tím pomohl? Z běžných linuxových nástrojů mám v podstatě jen busybox a ulibc, takže dost omezení.

Děkuji.

Odpovědi

5.5. 14:58 X
Rozbalit Rozbalit vše Re: C dohledání memory leaks
To je furt to same jako minule? To se snad vyresilo ne?
5.5. 15:21 MilanC | skóre: 15
Rozbalit Rozbalit vše Re: C dohledání memory leaks
Ahoj, vyřešilo, zabraná paměť se rapidně snížila, ale to samé to není.

Já teď potřebuji ověřit, protože je z toho v podstatě trvale běžící "démon" provádějící různé akce na pozadí, že mi to za týden nevyžere zdroje. Zatím to mám pořešené restartovací smyčkou, ale to je takové trochu prasácké a komplikuje mi i trochu život. :-)

Já s těmito nástroji nemám moc zkušenost, naposledy jsem hojně využíval MemProof pro Delphi, tak nevím, jestli je možnost nějak ty chyby odhalit. Prostě si představuji, že to nechám chvíli běžet, pak tomu pošlu kill a získám nějaký report, že vše, co bylo alokováno bylo také uvolněno. Ale fakt nemám zkušenost a už vůbec ne s těmi sdílenými knihovnami. Třeba u json-c je pro uvolnění dost často volat json_object_put, ale ani v oficiálních příkladech jej nevolají pokaždé, takže těžko tušit, kdy přesně ho tam mít (jestli i u parse metod nebo jen když vytvářím novou json strukturu atd.). Prostě tam mám nějaké nejistoty a rád bych si je nějak potvrdil. :)
5.5. 17:17 X
Rozbalit Rozbalit vše Re: C dohledání memory leaks
5.5. 21:07 debian+ | skóre: 30 | blog: analyzy
Rozbalit Rozbalit vše Re: C dohledání memory leaks
Joj, ach. Cečko ma dve spôsoby predávania dát, priamo (skopírujú sa na zásobník) a cez pointere. Parameter const znamená, že sa dáta čítajú, nemodifikujú. Musíš vedieť, ako ktorá funkcia pracuje a tak sa zariadiť. Čo sa novo alokuje, následné dealokovať. Aj pri pomocných funkciách.

Ak nevieš čo robí Ta funkcia, tak si pozrí jej kód, ak je knižnica open-source a budeš mať (väčšiu) istotu.

Prečo robíš a la embed C? Prečo to nenecháš, čo sa v tom vyznajú, keď si trošku stratený.

Rob si monitoring systému so záznamy v historií, aby si vedel ako sa to správa. A prípadne maj poistku - pri istej vyťaženosti proces reštartuješ.
debian.plus@protonmail.com
6.5. 00:32 dsss
Rozbalit Rozbalit vše Re: C dohledání memory leaks
S oblibou pouzivam promenne prostredi MALLOC_CHECK_ (man 3 mallopt) a valgrind.
6.5. 13:24 ehmmm
Rozbalit Rozbalit vše Re: C dohledání memory leaks
Nevim, co to je za stroj, takze obecne rady.

Pokud to je neco typu Arduino, tak dlouhodobe sledovat stack a heap a prostor mezi nima. Osobne se mallocu v embedded vyhybam a kdyz uz, tak uvolnovat presne v opacnem poradi, nez se alokuje, aby nebyly v heapu diry.

Pokud to je neco, kde uz je treba i Linux, tak koukat na velikost obsazene pameti jednotlivych procesu a nesmi proste stoupat. Proste za tyden musi byt stejna jako pred tydnem.

Pokud mas podezreni na nejakou funkci, tak misto abys ji volal obvykle napr. jednou za hodinu, tak ji zavolej milionkrat a hned budes vedet, jestli to je v poradku.

Vsichni si tu delaji legraci s Pascalu, ale treba Lazarus ma HeapTrc a ten ukaze, jestli jsem nahodou nezapomnel neco uvolnit.
8.5. 04:03 BFU
Rozbalit Rozbalit vše Re: C dohledání memory leaks
Co zkusit LSan:

https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer

Je to soucast gcc i clang, dela to compile-time instrumentaci takze je to signifikantne rychlejsi nez valgrind. Pouziti je tim stylem, ze se userspace prekompiluje s '-g3 -Og -fsanitize=address'/'leak' CFLAGS/LDFLAGS (at to ma debug symboly bez optimalizace at to muze rozumne resolvovat backtrace) a pak se to proste spusti. Jakmile program skonci, tak vyhodi nejakou statistiku leaku.
8.5. 21:08 MilanC | skóre: 15
Rozbalit Rozbalit vše Re: C dohledání memory leaks
Tohle by se mi dost líbilo, ale asi mám smůlu... ale díky
helper.c:1:0: error: -fsanitize=address not supported for this target [-Werror]
8.5. 23:19 BFU
Rozbalit Rozbalit vše Re: C dohledání memory leaks
ASan by mel Linux/MIPS target umet. Mozna to staci zapnout pri kompilovani toolchainu, nebo je toolchain opravdu moc stary ?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.