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.
Annotation in English
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.
Keywords
CodeLite, Plugin, Valgrind, Memcheck, profilování paměti, únik paměti, wxWidgets, C++
Keywords in English
CodeLite, Plugin, Valgrind, Memcheck, Memory profiling, Memory leak, wxWidgets, C++
Length of the covering note
77
Language
CZ
Annotation
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.
Annotation in English
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.
Keywords
CodeLite, Plugin, Valgrind, Memcheck, profilování paměti, únik paměti, wxWidgets, C++
Keywords in English
CodeLite, Plugin, Valgrind, Memcheck, Memory profiling, Memory leak, wxWidgets, C++
Research Plan
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ší.
Research Plan
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ší.
Recommended resources
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
Recommended resources
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