the great troubleshooting encounter - eclipsewiki.eclipse.org › images › 8 › 89 ›...

62
The great troubleshooting encounter: CDT meets Trace Compass EclipseCon, March 2015 Marc Khouzam Marc-André Laperle

Upload: others

Post on 26-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

The great troubleshooting encounter:

CDT meets Trace CompassEclipseCon, March 2015

Marc Khouzam

Marc-André Laperle

Page 2: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

22

Marc Khouzam

Software Developer at Ericsson since 1998

CDT project co-lead, focusing on Debugging

Working with CDT since 2009

Marc-André Laperle

Software Developer at Ericsson since 2013

Committer for Trace Compass, CDT and Linux Tools

Contributor to other projects (Platform UI, SWT, EGit, Mylyn, PDE)

ABOUT US

Page 3: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

3

AGENDA

A bit of background: Debug and Tracing

CDT Debug and Trace Compass integration

– An integration in 4 parts

Conclusion

Page 4: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

A little background:

Advanced Debugging

Page 5: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

55

Non-Stop Debugging

› Program continues execution while suspending some threads

› Reduced intrusiveness

Page 6: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

6

DYNAMIC PRINTFINSERTED AT RUNTIME

WITH GDB

DYNAMIC-PRINTF

COMPILEDPRINTF

DEBUGGER

› Sometimes traces are necessary

› Printf without recompiling or redeploying!

Page 7: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

7

OS Awareness

Sockets

Shared Memory Segments

Process Groups

All Processes

All Threads

File Descriptors

Loaded Kernel Modules

Semaphores

Message Queues

› Access to system information while debugging

Page 8: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

More background:

Tracing with

Trace Compass

Page 9: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

9

TRACE COMPASS

Page 10: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

10

Common Features

› Data-driven state system and views– XML description of state changes to convert trace events to states– XML description of view representation of the computed state system– Can be created without changing source code or recompiling

› For example: 50 lines of XML created the view below

Page 11: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

11

Control flow view

› Displays processes state changes (color-coded) over time

Page 12: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

12

Resources view

› Displays system resource states (color-coded) over time

Page 13: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

13

CPU USAGE View

Page 14: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

AGENDA

A bit of background: Debug and Tracing

CDT Debug and Trace Compass integration

1. Enhanced Post-mortem troubleshooting

2. Debugging with Trace snapshots

3. Tracing with the (Multicore) Visualizer

4. GDB Traces with Trace Compass

Conclusion

Page 15: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

Enhanced Post-Mortem

Troubleshooting

Page 16: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

16

Post-Mortem Debug

› Use GDB to examine core file› Variables, Registers, Memory

Page 17: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

17

Post-Mortem Trace

› Standard visualization of traces taken upon a crash

Page 18: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

18

Core + Traces

› Joint Debug/Tracing visualization for most flexibility

Page 19: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

19

System setup

1. Enable Tracing e.g., LTTng, UST, etc

2. Register crash handler with Linux kernel (man core)

3. Crash Handler collects/stores traces as well as core file

Page 20: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

20

Debug LauncH

1) Use Post-Mortem launch 2) Specify location of Traces

Page 21: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

21

Core + Traces

Page 22: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

AGENDA

A bit of background: Debug and Tracing

CDT Debug and Trace Compass integration

1. Enhanced Post-mortem troubleshooting

2. Debugging with Trace snapshots

3. Tracing with the (Multicore) Visualizer

4. GDB Traces with Trace Compass

Conclusion

Page 23: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

Debugging with

Trace Snapshots

Page 24: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

24

Debugging with Trace Snapshots

› Acquire snapshot and open on suspended debugger

Suspended

CDT Debug

Trace Compass

LTTng

Take snapshot

Snapshot acquired

Open snapshot!

Page 25: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

25

Debugging with Trace Snapshots

› Advantages:– Very low overhead– Minimal disk usage

› Disadvantage:– Limited data available (as big as buffer allows)

Page 26: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

26

The Prototype

1) Create a tracing session 2) Select session in Debug configuration

3) Suspend (or hit a breakpoint)

Page 27: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

27

The Prototype

Page 28: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

28

Future improvements

› Configure session fromDebug configuration

• Choose tracer• Choose trace points• Tracer specific options• Persisted

Page 29: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

29

Future improvements

› Callstacks of the last few seconds

Current stack frames (GDB)

+

Previous events with function entry and exit (LTTng snaphot)

Page 30: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

30

Future improvements

Result (example)

Callstack can be visualized moments before suspend!

Page 31: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

AGENDA

A bit of background: Debug and Tracing

CDT Debug and Trace Compass integration

1. Enhanced Post-mortem troubleshooting

2. Debugging with Trace snapshots

3. Tracing with the (Multicore) Visualizer

4. GDB Traces with Trace Compass

Conclusion

Page 32: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

Trace (Multicore)

Visualizer

Page 33: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

33

multicore visualizer

Page 34: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

34

Trace Visualizer

› Show all threads except sleeping All of them could run

› Coloured by kernel state

› CPU Usage

› We can have a better grasp of level of overload

› Which processes are affected by the overload?

Page 35: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

35

TRACE Visualizer

› Colouring by process

› Sorting as improvement

Page 36: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

36

TRACE COMPASS and Trace Visualizer

Page 37: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

37

TRACE Visualizer

› Another example

› Notice partial CPU usage even with overload

› Could it be the Kernel using CPU?

› Could indicate even stronger overload

Page 38: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

38

› Coloured by kernel state (RUNNING & SYSCALL)›

Visualizer with Xeon Phi

Page 39: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

39

› Coloured by process

Visualizer with Xeon Phi

Page 40: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

40

› Filtering of cores to display

Visualizer with Xeon Phi

Page 41: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

AGENDA

A bit of background: Debug and Tracing

CDT Debug and Trace Compass integration

1. Enhanced Post-mortem troubleshooting

2. Debugging with Trace snapshots

3. Tracing with the (Multicore) Visualizer

4. GDB Traces with Trace Compass

Conclusion

Page 42: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

GDB Traces with

Trace Compass

Page 43: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

43

GDB TRACEpoints

› Instrumentation, collection and visualization in CDT

Page 44: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

44

Debug GDB Traces

Collected Data

Line where tracewas collected

Tracepoint thatwas hit

Page 45: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

45

GDB TRACEs event table

› Synchronized Trace Compass's Events Table

Page 46: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

Conclusion

Page 47: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

47

MULTICORE DEBUG GROUP › Joint effort to bring multicore debugging to the CDT

– Visualizer, Pin&Clone, Multiprocess, etc

› Support for those that want to add new features

› Monthly conference calls (open to all interested and free )

– http://wiki.eclipse.org/CDT/MultiCoreDebugWorkingGroup

Page 48: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

48

More on Tracing

› Learn more about tracing and Trace Compass:

› Thursday 12 noon in Harbour AB with Marc-Andre:

“Analyzing Eclipse Applications with Trace Compass”

Page 49: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

Some References

› Integration on GitHub, https://github.com/MarkZ3/Trace-Compass/tree/dsf-mv-integration

› CDT Project, http://www.eclipse.org/cdt› Trace Compass,

https://projects.eclipse.org/projects/tools.tracecompass

› CDT FAQ, http://wiki.eclipse.org/CDT/User/FAQ› CDT Debug workgroup

http://wiki.eclipse.org/CDT/MultiCoreDebugWorkingGroup › CDT Wiki, http://wiki.eclipse.org/CDT

Page 50: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

5050

Feedback

Page 51: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

51

Final Q&A

Page 52: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

BONUS SLIDES

Page 53: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

Other CDT Debug News

Page 54: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

54

Debug View Labels

› GDB binary name/version

› Thread Names

Page 55: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

55

Per-Element Format

› Ability to set format per element

› Variables, Expressions, Registers views

Page 56: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

56

Register Groups

› Ability to create groups of registers

Page 57: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

57

Pin&Clone for Visualizer

› Ability to pin a Multicore Visualizer to a session

› Allows to monitor multiple systems concurrently

Page 58: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

58

Mini core dumps

› Effort of the Linux Diamon workgroup (diamon.org)

› Mini core dumps:– Configurable excerpt of full core dump– Space savings (good for embedded)– Storage of multiple mini core dumps

› Coming to a Linux distribution in the near future!

Page 59: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

59

Future Plans

Page 60: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

60

Global Breakpoints

Applies to every process

Auto attach when hit

Un-started or short lived process

› Contribution to Linux Kernel ongoing

Page 61: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

61

Integrated GDB Console

prompt

Eclipse’sGDB-console

Event reporting

Command history

Command completion

Synchronized with GUI

IntegratedOr

stand-alone

› Coming in 2015!

Page 62: The great troubleshooting encounter - Eclipsewiki.eclipse.org › images › 8 › 89 › CDT_Meets_Trace... · 2 2 Marc Khouzam Software Developer at Ericsson since 1998 CDT project

62

PTC SETS

Process Thread Core (PTC) sets control groups of debug elements:

– Step threads numbered between 34 and 59

– Step all threads running on core 2

– Stop everything running on cores 5 to 7, preventing new threads from being started