Modern tools to debug GStreamer applications Guillaume Desmottes - - PowerPoint PPT Presentation

modern tools to debug gstreamer applications
SMART_READER_LITE
LIVE PREVIEW

Modern tools to debug GStreamer applications Guillaume Desmottes - - PowerPoint PPT Presentation

Modern tools to debug GStreamer applications Guillaume Desmottes guillaume.desmottes@collabora.com 3 rd February 2018 Plan T racers Leak tracer GstShark Dealing with logs 2 GstTracer Introduced in 1.8 T racing module


slide-1
SLIDE 1

Modern tools to debug GStreamer applications

Guillaume Desmottes guillaume.desmottes@collabora.com 3rd February 2018

slide-2
SLIDE 2

Plan

  • T

racers

  • Leak tracer
  • GstShark
  • Dealing with logs

2

slide-3
SLIDE 3

GstTracer

  • Introduced in 1.8
  • T

racing module loaded at run time

  • Post-run analysis and live introspection
  • Monitoring hooks
  • Formatted output

3

slide-4
SLIDE 4

Stats tracer

4

  • $ GST_DEBUG_FILE=stats.log GST_DEBUG="GST_TRACER:7" GST_TRACERS="stats;rusage" gst-launch-

1.0 videotestsrc num-bufgers=10 ! x264enc ! fakesink

  • $ gst-stats-1.0 stats.log
slide-5
SLIDE 5

Latency tracer

5

  • Measure the time it took for each bufger to travel from

source to sink.

  • $ GST_DEBUG="GST_TRACER:7" GST_TRACERS=latency gst-launch-1.0 v4l2src ! videoconvert !

x264enc tune=zerolatency ! queue ! avdec_h264 ! queue ! glimagesink

slide-6
SLIDE 6

Leaks tracer

6

  • T

rack refcounts of GObject and GstMiniObject

– Only track leaks in gst code!

  • Raise a warning on leaks
  • Integrated in 1.10 (core)
  • No false positives
  • Much lighter/faster than Valgrind
slide-7
SLIDE 7

Tracking leaks

7

  • $ GST_DEBUG="GST_TRACER:7" GST_TRACERS=leaks gst-launch-1.0 v4l2src num-bufgers=10 !

videoconvert ! x264enc tune=zerolatency ! queue ! avdec_h264 ! queue ! glimagesink

slide-8
SLIDE 8

Tracking leaks: stack trace

8

  • Libunwind
  • GST_TRACERS="leaks(stack-traces-fmags=full,fjlters=GstGLDisplayWayland)"
slide-9
SLIDE 9

Leaks tracer: extra features

9

  • T

rack ref/unref operations (check-refs=true)

  • List alive objects while running (SIGUSR1)
  • Check points (SIGUSR2)
slide-10
SLIDE 10

GstShark: tracers

10

  • Inter latency
  • Bufger rate on src pad
  • Schedule time
  • Queues level
  • ...
  • https://github.com/RidgeRun/gst-shark
slide-11
SLIDE 11

GstShark: visualization

11

slide-12
SLIDE 12

Dealing with GStreamer logs

12

slide-13
SLIDE 13

GStreamer Debug Viewer

13

slide-14
SLIDE 14

gst-log-parser

14

  • GStreamer logs parsing library
  • High level objects to manipulate logs
  • Easy fjltering, mapping, etc (iterator)
  • https://github.com/gdesmott/gst-log-parser/
slide-15
SLIDE 15

Gst-log-parser: ts-dif

15

  • Highlight highest timestamps gaps (per thread)
slide-16
SLIDE 16

Modern tools to debug GStreamer applications

Any questions?