Debugging%20Under%20Linux - PowerPoint PPT Presentation

About This Presentation
Title:

Debugging%20Under%20Linux

Description:

When you want to trace an application execution (breakpoints, step in, ... http://libre.act-europe.fr/gvd/ Very easy to install locally. PREFERED CHOICE. 08/03/2002 ... – PowerPoint PPT presentation

Number of Views:27
Avg rating:3.0/5.0
Slides: 20
Provided by: lhcbcomp
Category:

less

Transcript and Presenter's Notes

Title: Debugging%20Under%20Linux


1
Debugging Under Linux
Sebastien Ponce Friday, 8 March 2002
2
Overview
  • When to use a debugger ?
  • Available debuggers
  • Very short introduction to gvd (GNU Visual
    Debugger)
  • Some hints on debugging Gaudi Jobs
  • Demo

3
When to Use a Debugger ?
  • If you compiled in debug mode
  • When you want to trace an application execution
    (breakpoints, step in, ...)
  • When you want to know where the execution crashes
    (segmentation fault is handled)
  • If you compiled in optimize mode
  • You can still know which functions were called
    and which one failed

4
What to Do With a Core ?
  • You can still debug a program after a
    segmentation fault if you have a core file
  • You can learn about
  • Where it failed
  • What were the values of variables at this time
  • What was the call stack at this time

5
Available Debuggers
  • GDB
  • Default linux debugger
  • Powerfull stable
  • Installed on lxplus
  • BUT for experts only
  • DDD
  • Based on gdb
  • Installed on lxplus
  • Allow Visual debugging
  • BUT not stable
  • GVD
  • Based on gdb
  • Installed in LHCb
  • Allow visual debug
  • Stable
  • Can be found for free at
  • http//libre.act-europe.fr/gvd/
  • Very easy to install locally
  • PREFERED CHOICE

6
Launching gvd
  • Launching gvd
  • source setup.csh
  • gvd ltexecutablegt
  • Inside gvd
  • set breaking points
  • run ltoptionsgt
  • In case of core dump
  • source setup.csh
  • gvd ltexecutablegt
  • Inside gvd
  • File?Open Core Dump ltcoregt

7
gvd Basics
Menu bar
Tool bar
Data display
Call stack
Source files
Source code
Current Line
Gdb window
8
Some Hints for Gaudi Jobs
  • Gaudi is using shared libraries
  • The source files of these do no appear in gvd
    before the libraries are loaded
  • The trick is
  • gvd ltexecutablegt
  • break main
  • run ltoptionsgt
  • next ? here we loaded the ApplicationMgr
  • break ApplicationMgrconfigure
  • cont
  • finish ? now every dll is loaded

9
Demo (1)
  • Launch
  • tar xvf demo.tar
  • cd demo
  • make
  • ./hello
  • Segmentation Fault
  • gvd hello

10
Demo (2)
  • gdb windows
  • (gdb) run
  • Starting Program /home/sponce/demo/hello
  • Program received signal SIGSEGV, Segmentation
    fault
  • 0x400e1630 in strcmp() from /lib/libc.so.6
  • (gdb)
  • In menu
  • Data ? Call Stack
  • In Tool Bar
  • Up

11
Demo (3)
12
Demo (4)
Helloprint called from HellodisplayMessage
with no argument
13
Demo (5)
  • Edition of Hello.h
  • static void print (char line 0)
  • becomes
  • static void print (char line "")
  • In a shell
  • make
  • ./hello
  • Segmentation Fault
  • gvd hello
  • In gvd
  • run

There is another bug !
14
Demo (6)
  • In gvd
  • display Call Stack
  • Up"
  • The bug is still in strcmp, line is still 0x0
  • In gvd
  • Up"
  • Data?Display Any Expression ?this
  • Then click on the fields of this to see the
    internal values

15
Demo (7)
this?m_message is 0x0
16
Demo (8)
  • In gvd
  • Click on the blue point in front of line 4 of
    Hello.cpp to set a break point there
  • Click run
  • Say you want to start from beginning
  • gvd stops when the program reaches line 4
  • obviously the constructor was called with message
    0x0
  • Click "Up" to see where we came from

17
Demo (9)
18
Demo (10)
This is an example of what you get in case of non
debug mode
You still have the call stack but not the values
of the arguments
19
Demo (11)
This show you what you get from a core gvd
hello File-gtOpen Core
Its equivalent to run the program inside the
debugger
Write a Comment
User Comments (0)
About PowerShow.com