Debugger - gdb process exit [gdb interal commands attached - very long]

Alvin alvinbeach at gmail.com
Wed Nov 7 17:05:13 GMT 2007


On Wednesday 07 November 2007 12:13:48 Vladimir Prus wrote:
> On Wednesday 07 November 2007 19:01:03 Alvin wrote:
> > Hello all,
> >
> > I have been experiencing a bug with the integrated debugger in KDevelop
> > 3.5.0.1 in KDE 3.5.8 release 21.2 on openSUSE 10.2.
>
> Which gdb version, and can you try either gdb 6.7 or CVS HEAD thereof?

I have gdb-6.7-15.1 at i586 installed. It came from the KDevelop repo at 
software.opensuse.org site

>
> > When I examine a variable in the sidebar, the gdb process exists as soon
> > as I leave a function. The gdb plane states:
> >
> > ---
> > /bin/sh -c libtool
> > gdb /encrypted/devel/MyApp/debug/./src/myapp --interpreter=mi2 -quiet
> > Using host libthread_db library "/lib/libthread_db.so.1".
> > (gdb) Process exited
> > ---
>
> Can you right click on GDB window, select "Show internal commands",
> copy-paste it all and either send it to be directly, or create a bug and
> attach it there?

Sure, I'm happy to help. I wrote the trivial program below using a new 
Automake project to help shorten the output. I added the line numbers in 
hopes that the gdb output is easier to trace.

I set a break point inside of pack_message(). I then examined s. Then I 
stepped line-by-line till I got out of the function. That's when gdb Process 
exited occurred. The Internal commands output is listed below the source 
code.

--- myapp start ---
1
2
3   #ifdef HAVE_CONFIG_H
4   #include <config.h>
5   #endif
6
7   #include <iostream>
8   #include <cstdlib>
9   #include <string>
10
11 using namespace std;
12
13  void pack_message(string &s)
14  {
15  	s = "Hello, world!";     //<--- breakpoint here and 's' was examined
16  }
17
18  int main(int argc, char *argv[])
19  {
20  	string s;
21
22  	pack_message(s);
23  
24  	cout << s << endl;
25  
26  	return EXIT_SUCCESS;
27  }
28
--- myapp end ----

--- KDevelop gdb Internal Commands start ---

gdb /encrypted/Projects/myapp/debug/./src/myapp --interpreter=mi2 -quiet
(gdb) set print static-members off
Using host libthread_db library "/lib/libthread_db.so.1".
set print static-members off
^done
(gdb) set width 0
set width 0
^done
(gdb) set height 0
set height 0
^done
(gdb) set stop-on-solib-events 1
set stop-on-solib-events 1
^done
(gdb) handle SIG32 pass nostop noprint
handle SIG32 pass nostop noprint
Signal        Stop	Print	Pass to program	Description
SIG32         No	No	Yes		Real-time event 32
^done
(gdb) handle SIG41 pass nostop noprint
handle SIG41 pass nostop noprint
Signal        Stop	Print	Pass to program	Description
SIG41         No	No	Yes		Real-time event 41
^done
(gdb) handle SIG42 pass nostop noprint
handle SIG42 pass nostop noprint
Signal        Stop	Print	Pass to program	Description
SIG42         No	No	Yes		Real-time event 42
^done
(gdb) handle SIG43 pass nostop noprint
handle SIG43 pass nostop noprint
Signal        Stop	Print	Pass to program	Description
SIG43         No	No	Yes		Real-time event 43
^done
(gdb) set print asm-demangle on
set print asm-demangle on
^done
(gdb) set output-radix 10
set output-radix 10
Output radix now set to decimal 10, hex a, octal 12.
^done
(gdb) cd /encrypted/Projects/myapp/debug/./src
cd /encrypted/Projects/myapp/debug/./src
Working directory /encrypted/Projects/myapp/debug/src.
^done
(gdb) -break-insert /encrypted/Projects/myapp/src/myapp.cpp:15
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x080487ba",func="pack_message(std::string&)",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="15",times="0"}
(gdb) tty /dev/pts/2
tty /dev/pts/2
^done
(gdb) -exec-run
^running
Stopped due to shared library event
*stopped,thread-id="0"
(gdb) -break-condition 1 
^done
(gdb) -break-after 1 0
^done
(gdb) -break-enable 1
^done
(gdb) -exec-continue
^running
Stopped due to shared library event
*stopped,thread-id="0"
(gdb) -exec-continue
^running
*stopped,reason="breakpoint-hit",bkptno="1",thread-id="0",frame={addr="0x080487ba",func="pack_message",args=[{name="s",value="@0xbfa3e25c"}],file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="15"}
(gdb) -file-list-exec-source-file
^done,line="15",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp"
(gdb) -break-list
^done,BreakpointTable={nr_rows="1",nr_cols="6",hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
{width="14",alignment="-1",col_name="type",colhdr="Type"},
{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
{width="10",alignment="-1",col_name="addr",colhdr="Address"},
{width="40",alignment="2",col_name="what",colhdr="What"}],body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x080487ba",func="pack_message(std::string&)",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="15",times="1"}]}
(gdb) -stack-list-arguments 0 0 0
^done,stack-args=[frame={level="0",args=[name="s"]}]
(gdb) -stack-list-locals 0
^done,locals=[]
(gdb) -thread-list-ids
^done,thread-ids={},number-of-threads="0"
(gdb) info frame
info frame
Stack level 0, frame at 0xbfa3e230:
 eip = 0x80487ba in pack_message(std::string&) 
(/encrypted/Projects/myapp/src/myapp.cpp:15); saved eip 0x804886a
 called by frame at 0xbfa3e270
 source language c++.
 Arglist at 0xbfa3e228, args: s=@0xbfa3e25c
 Locals at 0xbfa3e228, Previous frame's sp is 0xbfa3e230
 Saved registers:
  ebp at 0xbfa3e228, eip at 0xbfa3e22c
^done
(gdb) -stack-info-depth 6
^done,depth="2"
(gdb) -stack-list-frames 0 2
^done,stack=[frame={level="0",addr="0x080487ba",func="pack_message",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="15"},frame={level="1",addr="0x0804886a",func="main",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="22"}]
(gdb) print /x &s
print /x &s
$1 = 0xbfa3e25c
^done
(gdb) -var-create KDEV479 * "s"
^done,name="KDEV479",numchild="2",value="{...}",type="string &"
(gdb) print /x &s
print /x &s
$2 = 0xbfa3e25c
^done
(gdb) whatis s
whatis s
type = string &
^done
(gdb) -var-update *
^done,changelist=[]
(gdb) -var-evaluate-expression "KDEV479"
^done,value="{...}"
(gdb) -var-list-children "KDEV479"
^done,numchild="2",children=[child={name="KDEV479.public",exp="public",numchild="1"},child={name="KDEV479.private",exp="private",numchild="1"}]
(gdb) -var-list-children "KDEV479.public"
^done,numchild="1",children=[child={name="KDEV479.public.npos",exp="npos",numchild="0",type="const 
size_t"}]
(gdb) -var-list-children "KDEV479.private"
^done,numchild="1",children=[child={name="KDEV479.private._M_dataplus",exp="_M_dataplus",numchild="2",type="std::basic_string<char,std::char_traits<char>,std::allocator<char> 
>::_Alloc_hider"}]
(gdb) -var-evaluate-expression "KDEV479.public.npos"
^done,value="4294967295"
(gdb) -var-evaluate-expression "KDEV479.private._M_dataplus"
^done,value="{...}"
(gdb) -var-list-children "KDEV479.private._M_dataplus"
^done,numchild="2",children=[child={name="KDEV479.private._M_dataplus.std::allocator<char>",exp="std::allocator<char>",numchild="1",type="std::allocator<char>"},child={name="KDEV479.private._M_dataplus.public",exp="public",numchild="1"}]
(gdb) -var-evaluate-expression "KDEV479.private._M_dataplus.std::allocator<char>"
^done,value="{...}"
(gdb) -var-list-children "KDEV479.private._M_dataplus.public"
^done,numchild="1",children=[child={name="KDEV479.private._M_dataplus.public._M_p",exp="_M_p",numchild="1",type="char 
*"}]
(gdb) -var-evaluate-expression "KDEV479.private._M_dataplus.public._M_p"
^done,value="0xb7f9d5dc \"\""
(gdb) -exec-next
^running
*stopped,reason="end-stepping-range",thread-id="0",frame={addr="0x080487cd",func="pack_message",args=[{name="s",value="@0xbfa3e25c"}],file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="16"}
(gdb) -file-list-exec-source-file
^done,line="16",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp"
(gdb) -break-list
^done,BreakpointTable={nr_rows="1",nr_cols="6",hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
{width="14",alignment="-1",col_name="type",colhdr="Type"},
{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
{width="10",alignment="-1",col_name="addr",colhdr="Address"},
{width="40",alignment="2",col_name="what",colhdr="What"}],body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x080487ba",func="pack_message(std::string&)",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="15",times="1"}]}
(gdb) -stack-list-arguments 0 0 0
^done,stack-args=[frame={level="0",args=[name="s"]}]
(gdb) -stack-list-locals 0
^done,locals=[]
(gdb) -thread-list-ids
^done,thread-ids={},number-of-threads="0"
(gdb) info frame
info frame
Stack level 0, frame at 0xbfa3e230:
 eip = 0x80487cd in pack_message(std::string&) 
(/encrypted/Projects/myapp/src/myapp.cpp:16); saved eip 0x804886a
 called by frame at 0xbfa3e270
 source language c++.
 Arglist at 0xbfa3e228, args: s=@0xbfa3e25c
 Locals at 0xbfa3e228, Previous frame's sp is 0xbfa3e230
 Saved registers:
  ebp at 0xbfa3e228, eip at 0xbfa3e22c
^done
(gdb) -stack-info-depth 6
^done,depth="2"
(gdb) -stack-list-frames 0 2
^done,stack=[frame={level="0",addr="0x080487cd",func="pack_message",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="16"},frame={level="1",addr="0x0804886a",func="main",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="22"}]
(gdb) print /x &s
print /x &s
$3 = 0xbfa3e25c
^done
(gdb) whatis s
whatis s
type = string &
^done
(gdb) -var-update *
^done,changelist=[{name="KDEV479.private._M_dataplus.public._M_p",in_scope="true",type_changed="false"}]
(gdb) -var-evaluate-expression "KDEV479.private._M_dataplus.public._M_p"
^done,value="0x804b014 \"Hello, world!\""
(gdb) -exec-next
^running
*stopped,reason="end-stepping-range",thread-id="0",frame={addr="0x0804886a",func="main",args=[],file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="24"}
(gdb) -file-list-exec-source-file
^done,line="24",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp"
(gdb) -break-list
^done,BreakpointTable={nr_rows="1",nr_cols="6",hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
{width="14",alignment="-1",col_name="type",colhdr="Type"},
{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
{width="10",alignment="-1",col_name="addr",colhdr="Address"},
{width="40",alignment="2",col_name="what",colhdr="What"}],body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x080487ba",func="pack_message(std::string&)",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="15",times="1"}]}
(gdb) -stack-list-arguments 0 0 0
^done,stack-args=[frame={level="0",args=[]}]
(gdb) -stack-list-locals 0
^done,locals=[name="s"]
(gdb) -thread-list-ids
^done,thread-ids={},number-of-threads="0"
(gdb) info frame
info frame
Stack level 0, frame at 0xbfa3e270:
 eip = 0x804886a in main (/encrypted/Projects/myapp/src/myapp.cpp:24); saved 
eip 0xb7d7402c
 source language c++.
 Arglist at 0xbfa3e268, args: 
 Locals at 0xbfa3e268, Previous frame's sp at 0xbfa3e260
 Saved registers:
  ebx at 0xbfa3e264, ebp at 0xbfa3e268, eip at 0xbfa3e26c
^done
(gdb) -stack-info-depth 6
^done,depth="1"
(gdb) -stack-list-frames 0 1
^done,stack=[frame={level="0",addr="0x0804886a",func="main",file="/encrypted/Projects/myapp/src/myapp.cpp",fullname="/encrypted/Projects/myapp/src/myapp.cpp",line="24"}]
(gdb) -var-delete "KDEV479.public.npos"
^done,ndeleted="1"
(gdb) -var-delete "KDEV479.private._M_dataplus.std::allocator<char>"
^done,ndeleted="1"
(gdb) -var-delete "KDEV479.private._M_dataplus.public._M_p"
^done,ndeleted="1"
(gdb) -var-delete "KDEV479.private._M_dataplus"
(gdb) Process exited

--- KDevelop gdb Internal Commands end ---

Hope this helps,

Alvin






More information about the KDevelop mailing list