Remote, embedded debugging
Timo
tike64 at gmail.com
Fri Jun 3 07:20:36 BST 2011
Dear List,
This is my first post on this list. I'm working for a small company in
Finland on mostly ARM-based embedded systems. I've been using KDevelop
as an IDE and debugging frontend from ancient times and I'm quite used
to it.
But there is a couple of quirks I would like to talk about.
When I start debugging session, KDevelop reports about an error:
<<<<
The debugger component encountered internal error while processing reply
from gdb. Please submit a bug report.
The exception is: MI type error
The MI response is: ^done
>>>>
However, debugging works after that, mostly. I'll paste 'internal
commands' output later.
KDevelop seems not to tell GDB about the executable file to be debugged.
I have put it into the gdbinit file as a 'file' command but I think
KDevelop should take it from the 'Executable' field in the 'Launch
Configuration'. At least older versions did.
My breakpoints doesn't activate. I have to delete them altogether and
then set them again. In older versions of KDevelop it was enough to
disable and enable them during the session.
Am I doing something wrong, should I report these as bugs or wait for an
update?
KDevelop version:
=================
Version 4.0.0 (using KDevPlatform 1.0.0)
Using KDE Development Platform 4.4.5 (KDE 4.4.5)
On Ubuntu 10.04.2
Internal Commands:
==================
(gdb) -gdb-exit
(gdb) quit
^exit
/arm/sg-none-eabi/bin/arm-none-eabi-gdb --interpreter=mi2 -quiet
(gdb) -gdb-show version
GNU gdb (Sourcery G++ Lite 2011.03-42) 7.2.50.20100908-cvs
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu
--target=arm-none-eabi".
For bug reporting instructions, please see:
<https://support.codesourcery.com/GNUToolchain/>.
^done
(gdb) -gdb-set width 0
^done
(gdb) -gdb-set height 0
^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) -enable-pretty-printing
^done
(gdb) source /usr/share/kde4/apps/kdevgdb/printers/gdbinit
source /usr/share/kde4/apps/kdevgdb/printers/gdbinit
/usr/share/kde4/apps/kdevgdb/printers/gdbinit:14: Error in sourced
command file:
Python scripting is not supported in this copy of GDB.
^error,msg="/usr/share/kde4/apps/kdevgdb/printers/gdbinit:14: Error in
sourced command file:\nPython scripting is not supported in this copy of
GDB."
(gdb) -inferior-tty-set /dev/pts/12
^done
(gdb) -environment-cd /home/timo/projects/ccd1100/boot/obj-arm-none-eabi
^done
(gdb) -gdb-set environment CROSS=arm-none-eabi
^done
(gdb) -gdb-set environment PATH=/arm/sg-none-eabi/bin:/usr/bin:/bin
^done
(gdb) -gdb-set print static-members off
^done
(gdb) -gdb-set print asm-demangle on
^done
(gdb) source /home/timo/projects/ccd1100/gdbinit
source /home/timo/projects/ccd1100/gdbinit
=thread-group-started,id="i1",pid="42000"
=thread-created,id="1",group-id="i1"
0x0000087c in ?? ()
*stopped,frame={addr="0x0000087c",func="??",args=[]},thread-id="1",stopped-threads="all"
(gdb) -thread-info
^done
warning: RMT ERROR : failed to get remote thread list.
^done,threads=[{id="1",target-id="Remote
target",frame={level="0",addr="0x0000087c",func="main",args=[{name="argc",value="<value
optimized out>"},{name="argv",value="<value optimized
out>"}],file="main.c",fullname="/home/timo/projects/ccd1100/boot/main.c",line="578"},state="stopped"}],current-thread-id="1"
(gdb) -break-list
^done,BreakpointTable={nr_rows="0",nr_cols="6",hdr=[{width="7",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=[]}
(gdb) -stack-list-frames --thread 1 0 21
^done,stack=[frame={level="0",addr="0x0000087c",func="main",file="main.c",fullname="/home/timo/projects/ccd1100/boot/main.c",line="578"}]
(gdb) -stack-list-locals --thread 1 --frame 0 --simple-values
^done,locals=[{name="c",type="int",value="<value optimized
out>"},{name="t",type="int",value="399002"},{name="i",type="unsigned
int",value="4294928992"},{name="ch",type="unsigned
int",value="0"},{name="inp",type="unsigned int",value="4194304"}]
(gdb) -var-update --thread 1 --frame 0 --all-values *
^done,changelist=[]
(gdb) -stack-list-arguments --thread 1 --frame 0 0 0 0
^done,stack-args=[frame={level="0",args=[name="argc",name="argv"]}]
(gdb) -var-create --thread 1 --frame 0 var83 @ c
^done,name="var83",numchild="0",value="<value optimized
out>",type="int",thread-id="1",has_more="0"
(gdb) -var-create --thread 1 --frame 0 var84 @ t
^done,name="var84",numchild="0",value="399002",type="int",thread-id="1",has_more="0"
(gdb) -var-create --thread 1 --frame 0 var85 @ i
^done,name="var85",numchild="0",value="4294928992",type="unsigned
int",thread-id="1",has_more="0"
(gdb) -var-create --thread 1 --frame 0 var86 @ ch
^done,name="var86",numchild="0",value="0",type="unsigned
int",thread-id="1",has_more="0"
(gdb) -var-create --thread 1 --frame 0 var87 @ inp
^done,name="var87",numchild="0",value="4194304",type="unsigned
int",thread-id="1",has_more="0"
(gdb) -var-create --thread 1 --frame 0 var88 @ argc
^done,name="var88",numchild="0",value="<value optimized
out>",type="int",thread-id="1",has_more="0"
(gdb) -var-create --thread 1 --frame 0 var89 @ argv
^done,name="var89",numchild="1",value="<value optimized out>",type="char
**",thread-id="1",has_more="0"
--
Timo
More information about the KDevelop
mailing list