Project

General

Profile

Google Summer of Code 2013 » History » Version 16

Christian Babeux, 03/08/2013 12:19 PM

1 1 Christian Babeux
h1. Google Summer of Code 2013
2 3 Christian Babeux
3 14 Christian Babeux
h1. Project Ideas
4 2 Christian Babeux
5 13 Christian Babeux
h2. Babeltrace python bindings
6 3 Christian Babeux
7 4 Christian Babeux
*Brief explanation*:
8 2 Christian Babeux
9
Provide Python bindings to the Babeltrace APIs to provide a complete CTF reading/writting infrastructure to Python programmers.
10 1 Christian Babeux
11
Most of the public Babeltrace API is currently mapped using SWIG. However, a more “Pythonic” set of wrapper classes will make trace reading and writting more accessible than using the current native API. The production and interpretation of CTF traces in a high level language such as Python will ease the development of custom trace analysis solutions. It will also provide a convenient language in which to implement trace conversion plugins.
12 4 Christian Babeux
13
*Expected results*: TBD
14
15
*Complementary information*:
16
17
The Common Trace Format (CTF) specifies a trace format based on the requirements of the industry (through collaboration with the Multicore Association) and the Linux community.
18 6 Christian Babeux
19 4 Christian Babeux
Babeltrace is a trace conversion library that aims to provide a convenient to read and convert trace files between different formats. It currently supports CTF, which is the trace format outputted by the LTTng 2.0 tracers and provides the CTF reference implementation.
20
21
*Skill level*: Easy - Medium
22 5 Christian Babeux
23 4 Christian Babeux
*Prerequisite Knowledge*: Python, OO development
24 5 Christian Babeux
25 15 Christian Babeux
*Mentors*: Jérémie Galarneau, TBD
26 7 Christian Babeux
27 13 Christian Babeux
h2. Trace probe support in C++
28 7 Christian Babeux
29
*Brief explanation*:
30
31 12 Christian Babeux
The LTTng userspace tracing relies on the instrumentation of target applications with tracepoint probes. Currently, the only way to use tracepoints in C++ applications is by compiling a stand-alone C library linked to liblttng-ust which is then linked to the target C++ application. 
32
33
While this method is functional, it introduces significant development time overhead and confusion for new users. This project aims at making the UST tracepoint probe code compatible with popular C++ compilers to enable direct compilation of the providers with the application. The necessary modifications should not be too complex but are an excellent introductory project.
34 7 Christian Babeux
35
*Expected results*: TBD
36
37
*Complementary information*:
38 9 Christian Babeux
39 8 Christian Babeux
Issue #338
40 7 Christian Babeux
41
*Skill level*: Easy - Medium
42
43
*Prerequisite Knowledge*: C++ development, C development, build environments
44
45
*Mentors*: TBD
46 10 Christian Babeux
47 13 Christian Babeux
h2. Development of an strace-like wrapper
48 10 Christian Babeux
49
*Brief explanation*:
50
51
The LTTng kernel tracer should provide all the functionality required to emulate the behaviour of the strace tracer. The goal of this project is the development of an strace drop-in replacement based on the LTTng tracing toolchain that shall provide the user with the functionality of strace and the performance characteristics of the LTTng kernel tracer. This should ensure backward compatibility with tools based on the strace output format.
52 11 Christian Babeux
53 10 Christian Babeux
This should be implemented as a Babeltrace trace converter plug-in used in “live mode” -- an upcoming Babeltrace feature currently being developped by Julien Desfossez. The resulting plug-in will enable seamless interoperability between CTF and strace-based tools.
54
55
*Expected results*: TBD
56
57
*Complementary information*:
58
59
Issue #15
60
61
*Skill level*: Medium
62 11 Christian Babeux
63 10 Christian Babeux
*Prerequisite Knowledge*:  C development, scripting
64 11 Christian Babeux
65 1 Christian Babeux
*Mentors*: TBD
66 15 Christian Babeux
67
h2. Improvement of liblttng-ust-libc-wrapper''s coverage of libc''s entry points
68
69
*Brief explanation*:
70
71
liblttng-ust-libc-wrapper is a library that currently provides a wrapper around libc to instrument malloc() and free() with UST tracepoint probes. This project aims to provide a full coverage of the standard libc functions.
72
73
This library is typically “LD_PRELOAD”-ed when debugging an application to override malloc() and free() symbols. The underlying libc symbol is then looked-up and called. The resulting trace can then be analyzed to identify memory allocation issues. Gaining a better libc coverage will provide LTTng users with even better debugging capabilities.
74
75
As an extension to this project, one could also develop a tool to automatically generate static tracepoints for arbitrary libraries from the header files.
76
77
*Expected results*: TBD
78 16 Christian Babeux
79 15 Christian Babeux
*Skill level*: Easy - Hard
80 16 Christian Babeux
81 15 Christian Babeux
*Prerequisite Knowledge*: C development, parser knowledge, scripting
82 16 Christian Babeux
83 15 Christian Babeux
*Mentors*: Christian Babeux, TBD