Full name email@address Deadline: 5.5.2024 Useful links and help: http://sourceware.org/gdb/current/onlinedocs/gdb/ http://users.ece.utexas.edu/~adnan/gdb-refcard.pdf http://valgrind.org/docs/manual/quick-start.html http://valgrind.org/docs/manual/manual-core.html http://valgrind.org/docs/manual/mc-manual.html http://clang-analyzer.llvm.org/ ----- Tasks ----- This assignment is about finding and repairing bugs in a large non-trivial program. Choose either your own program of a reasonable size and complexity (e.g., term project / "zapoctak" for C++/Java/C#) or a large module of some open source project, written in your favorite language for which there exist bug-finding and debugging tools. You can use any debugger or bug-finding tool (or combination thereof) that supports the language, in which the subject program is written, and the target platform of your choice. Reasonable options include GDB and Valgrind (for C/C++), your preferred IDE with built-in debugger (Visual Studio, IntelliJ IDEA), SpotBugs/FindBugs (Java), Checker Framework (Java), Clang analyzer (C/C++), Google Sanitizers (C/C++), and ReSharper (C#/.NET). However, feel free to use any other tool that is able find some bugs. Since to goal is to find (and repair) as many bugs as possible in your program, usage of multiple tools is strongly encouraged. When using some debugger in an IDE, report all the debugging actions that you perform (and in some cases also their output) into the protocol. In the case of C/C++ programs, look also for memory safety errors and memory leaks (you can use Valgrind to find them). When you decide to use a bug-finding tool, such as ReSharper for C#/.NET programs and SpotBugs for Java, enable search for all supported categories of bugs in the source code. The report should contain a source code location (file name + line number) for each bug. 1. Apply the selected bug-finding tools and debuggers on your program and repair at least some high-priority bugs (issues) reported by the tools. 2. Submit the following: original source code of your program, report produced by the bug-finding tool, repaired source code (diff/patch is sufficient), and the list of bugs from the report (IDs) that you fixed. ------- Survey: ------- We use the survey to evaluate the labs (tasks) and homework assignments. It is completely voluntary, but useful for future tuning of the content and level of complexity of the labs. Most questions can be answered using the scale from 1 to 10. Write your answer under the corresponding question. (1) How new was the topic and content of the lab for you? (1 - brand new, 10 - I already knew everything) (2) Do you think that the content of this lab was useful? (1 - useless or too trivial, 10 - very useful) (3) How do you evaluate the level of complexity of the homework assignment? (1 - too trivial, 5-6 - just about right, 10 - too demanding or complex) (4) How do you evaluate your prior experience with the tool in the context of the homework assignment? (1 - I already know and can use everything, 10 - I tried everything practically for the first time) (5) How much time (in minutes) did you spend working on the homework assignment? (6) Additional space for your own comments on the lab and homework assignment: