2016-05-21 14 views
-1

Ich arbeite derzeit an einer C-Netzwerkanwendung für Linux. Es basiert auf DPDK. Ich habe die App mit Valgrind ausgeführt, die keine Speicherlecks zeigt. Ich habe auch Intel Inspector 2016 versucht, mit den gleichen Ergebnissen. Aber wenn ich meine App für einige Tage auf einem System (AWS EC2-Instanz) laufen lasse, während ich die RAM-Auslastung (Cloudwatch) überwache, wird der RAM ständig, linear und langsam (ca. 1 MB/Tag) erhöht. Wie kann ich dieses Leck finden?Kann Speicherverlust in C-Anwendung nicht finden

+8

Genau - wie können wir dieses Leck herausfinden? Sie haben keinen Code veröffentlicht. –

+0

Postleitzahl, die Sie am meisten vermuten. –

+0

Ich kann den Code nicht veröffentlichen. Es ist eine sehr große Codebasis. Und ich habe jetzt seit ein paar Tagen nach dem Leck gesucht, nicht annähernd gefunden? Ich brauche nur ein paar Ideen, was getan werden könnte, wenn Valgrind und andere Tools diese Aufgabe nicht erfüllen können. – Vineet

Antwort

4

Eine Möglichkeit, dies zu debuggen, besteht darin, einen Code zu schreiben, der alle Speicherzuweisungen und die gesamte Zuweisung überwacht. Mit diesem Überwachungscode können Sie herausfinden, wo der zugewiesene Speicher ist.

Da Sie Linux verwenden, kann dies ein Ort, um zu starten:

http://www.gnu.org/savannah-checkouts/gnu/libc/manual/html_node/Hooks-for-Malloc.html

Ein erster Test überprüfen zu können, ob alle zugewiesenen Speicher free'd wird, wenn das Programm geschlossen wird. Dies zeigt an, ob Sie ein Leck oder eine Ansammlung von verwendetem Speicher haben.

+0

aufgerufen wird. Vielen Dank. Ich war auf der Suche nach so etwas. Ich werde es versuchen. – Vineet