Tato práce se zabývá nástroji na profilování paměti a zaměřuje se na problematiku hledáním úniků paměti v programech vyvíjených v C/C++. Realizačním výstupem práce je rozšíření (plugin) do vývojového prostředí CodeLite o podporu nástroje Memcheck, který je součástí frameworku Valgrind.
Teoretická část práce vysvětluje rozdíl mezi statickou a dynamickou analýzou programu, popisuje způsoby profilování programů, včetně popisu technické realizace profilerů. Práce se dále zaměřuje na profilery paměti a provádí srovnání několika nejvýznamnějších. Součástí první části je také teoretická diskuze o návrhu a tvorbě GUI a také porovnání existujících grafických front-endů pro Valgrind. V teoretické části je také popis IDE CodeLite jak z hlediska uživatelského, tak hlavně možností jeho rozšíření, včetně popisu knihovny wxWidgets, na které je CodeLite vystavěn.
Praktická část se věnuje samotnému návrhu a implementaci pluginu. Jsou zde popsány technické problémy při jeho tvorbě a diskutována možná řešení. Další součástí praktické části je popis rozhraní pro ještě další rozšíření pluginu. V poslední kapitole je uživatelská dokumentace.
Anotace v angličtině
This paper's main topics are memory profilers and generally it focuses on memory leak detection techniques in C/C++ based computer programs. The practical purpose of this paper was to implement a plugin for the CodeLite IDE to enhance the IDE with the Memcheck tool that is a part of the Valgrind framework.
The analytical part of this paper focuses on the differences between a static and dynamic program analysis, describes the various ways of program profiling. Technical implementation of profilers is also examined to some extent. The paper continues with a comparison of memory profilers and looks at some of the most important ones in more detail. Discussion about GUI design and a comparison of existing graphical front ends for Valgrind are also covered. The analytical part ends with the CodeLite IDE description focusing on both the end user's perspective and the possibilities of extending the IDE with plugins mainly in relation to the wxWidgets library that CodeLite is built on.
The actual plugin design and implementation are the main topics of the practical part. The technical problems and limitations are discussed here as well as their possible solutions. Future plugin extension possibilities are discussed in the very end followed by a user documentation.
Klíčová slova
CodeLite, Plugin, Valgrind, Memcheck, profilování paměti, únik paměti, wxWidgets, C++
Klíčová slova v angličtině
CodeLite, Plugin, Valgrind, Memcheck, Memory profiling, Memory leak, wxWidgets, C++
Rozsah průvodní práce
77
Jazyk
CZ
Anotace
Tato práce se zabývá nástroji na profilování paměti a zaměřuje se na problematiku hledáním úniků paměti v programech vyvíjených v C/C++. Realizačním výstupem práce je rozšíření (plugin) do vývojového prostředí CodeLite o podporu nástroje Memcheck, který je součástí frameworku Valgrind.
Teoretická část práce vysvětluje rozdíl mezi statickou a dynamickou analýzou programu, popisuje způsoby profilování programů, včetně popisu technické realizace profilerů. Práce se dále zaměřuje na profilery paměti a provádí srovnání několika nejvýznamnějších. Součástí první části je také teoretická diskuze o návrhu a tvorbě GUI a také porovnání existujících grafických front-endů pro Valgrind. V teoretické části je také popis IDE CodeLite jak z hlediska uživatelského, tak hlavně možností jeho rozšíření, včetně popisu knihovny wxWidgets, na které je CodeLite vystavěn.
Praktická část se věnuje samotnému návrhu a implementaci pluginu. Jsou zde popsány technické problémy při jeho tvorbě a diskutována možná řešení. Další součástí praktické části je popis rozhraní pro ještě další rozšíření pluginu. V poslední kapitole je uživatelská dokumentace.
Anotace v angličtině
This paper's main topics are memory profilers and generally it focuses on memory leak detection techniques in C/C++ based computer programs. The practical purpose of this paper was to implement a plugin for the CodeLite IDE to enhance the IDE with the Memcheck tool that is a part of the Valgrind framework.
The analytical part of this paper focuses on the differences between a static and dynamic program analysis, describes the various ways of program profiling. Technical implementation of profilers is also examined to some extent. The paper continues with a comparison of memory profilers and looks at some of the most important ones in more detail. Discussion about GUI design and a comparison of existing graphical front ends for Valgrind are also covered. The analytical part ends with the CodeLite IDE description focusing on both the end user's perspective and the possibilities of extending the IDE with plugins mainly in relation to the wxWidgets library that CodeLite is built on.
The actual plugin design and implementation are the main topics of the practical part. The technical problems and limitations are discussed here as well as their possible solutions. Future plugin extension possibilities are discussed in the very end followed by a user documentation.
Klíčová slova
CodeLite, Plugin, Valgrind, Memcheck, profilování paměti, únik paměti, wxWidgets, C++
Klíčová slova v angličtině
CodeLite, Plugin, Valgrind, Memcheck, Memory profiling, Memory leak, wxWidgets, C++
Zásady pro vypracování
Vytvořte rešerši na téma profilace aplikací vyvíjených pomocí jazyka C/C++ s důrazem na kontrolu korektního využití a správy operační paměti.
Vytvořte rozšiřující modul vývojového prostředí IDE CodeLite integrující nástroj memcheck profilačního frameworku Valgrind.
Výsledky profilace poskytované nástrojem memcheck zobrazujte standardní formou pomocí prostředků dostupných v IDE CodeLite.
Vytvořte programovou a uživatelskou dokumentaci.
Zásuvný modul publikujte pod licencí GPLv2 nebo novější.
Zásady pro vypracování
Vytvořte rešerši na téma profilace aplikací vyvíjených pomocí jazyka C/C++ s důrazem na kontrolu korektního využití a správy operační paměti.
Vytvořte rozšiřující modul vývojového prostředí IDE CodeLite integrující nástroj memcheck profilačního frameworku Valgrind.
Výsledky profilace poskytované nástrojem memcheck zobrazujte standardní formou pomocí prostředků dostupných v IDE CodeLite.
Vytvořte programovou a uživatelskou dokumentaci.
Zásuvný modul publikujte pod licencí GPLv2 nebo novější.
Seznam doporučené literatury
SEWARD, Julian, Nicholas NETHERCOTE a Josef WEIDENDORFER. Valgrind 3.3: Advanced Debugging and Profiling for GNU/Linux applications. Bristol: Network theory Limited, 2008. ISBN 0-9546120-5-1.
PRATA, Stephen. Mistrovství v C++. 3. aktualiz. vyd. Překlad Boris Sokol. Brno: Computer Press, 2007, 1119 s. ISBN 978-80-251-1749-1.
CORMEN, Thomas H. Introduction to algorithms. 3rd ed. Cambridge: MIT Press, 2009, xix, 1292 s. ISBN 978-0-262-03384-8.
KANISOVÁ, Hana a Miroslav MÜLLER. UML srozumitelně. 2. aktualiz. vyd. Brno: Computer Press, 2006, 176 s. ISBN 80-251-1083-4.
SMART, Julian. Cross-platform GUI programming with wxWidgets. Upper Saddle River: Prentice-Hall, 2006, xxxv, 700 s. ISBN 01-314-7381-6.
Valgrind Documentation. VALGRIND DEVELOPERS. Valgrind [online]. 3.9.0. 31.10.2013 [cit. 2014-01-23]. Dostupné z: http://valgrind.org/docs/manual/index.html
Reference: Standard C++ Library reference. Cplusplus.com: The C++ Resources Network [online]. 3.1. 2000-2014 [cit. 2014-01-23]. Dostupné z: http://www.cplusplus.com/reference/
SMART, Julian et al. Documentation. WxWidgets: Cross-platform GUI Toolkit [online]. 3.0.0. 11.11.2013 [cit. 2014-01-23]. Dostupné z: http://docs.wxwidgets.org/stable/index.html
Seznam doporučené literatury
SEWARD, Julian, Nicholas NETHERCOTE a Josef WEIDENDORFER. Valgrind 3.3: Advanced Debugging and Profiling for GNU/Linux applications. Bristol: Network theory Limited, 2008. ISBN 0-9546120-5-1.
PRATA, Stephen. Mistrovství v C++. 3. aktualiz. vyd. Překlad Boris Sokol. Brno: Computer Press, 2007, 1119 s. ISBN 978-80-251-1749-1.
CORMEN, Thomas H. Introduction to algorithms. 3rd ed. Cambridge: MIT Press, 2009, xix, 1292 s. ISBN 978-0-262-03384-8.
KANISOVÁ, Hana a Miroslav MÜLLER. UML srozumitelně. 2. aktualiz. vyd. Brno: Computer Press, 2006, 176 s. ISBN 80-251-1083-4.
SMART, Julian. Cross-platform GUI programming with wxWidgets. Upper Saddle River: Prentice-Hall, 2006, xxxv, 700 s. ISBN 01-314-7381-6.
Valgrind Documentation. VALGRIND DEVELOPERS. Valgrind [online]. 3.9.0. 31.10.2013 [cit. 2014-01-23]. Dostupné z: http://valgrind.org/docs/manual/index.html
Reference: Standard C++ Library reference. Cplusplus.com: The C++ Resources Network [online]. 3.1. 2000-2014 [cit. 2014-01-23]. Dostupné z: http://www.cplusplus.com/reference/
SMART, Julian et al. Documentation. WxWidgets: Cross-platform GUI Toolkit [online]. 3.0.0. 11.11.2013 [cit. 2014-01-23]. Dostupné z: http://docs.wxwidgets.org/stable/index.html
Přílohy volně vložené
1 CD ROM
Přílohy vázané v práci
ilustrace, schémata
Převzato z knihovny
Ne
Plný text práce
Přílohy
Posudek(y) oponenta
Hodnocení vedoucího
Záznam průběhu obhajoby
Student seznámil komisi s obsahem a výsledky své diplomové práce v krátké prezentaci. Po přečtení posudků vedoucího a oponenta práce následovala diskuze, ve které byly položeny následující dotazy:
1. Jaké typy úniků paměti rozlišujeme a jaký je mezi nimi rozdíl. Které z nich je Vámi použitý plug-in schopen rozpoznat? (dr. Stružka)
2. Je plug-in schopen rozpoznat i přístup na již uvolněnou paměť? (dr. Stružka)
Dotazy byly odpovězeny a pokračovalo se zkoušením předmětů.