I have a ARM Cortex-A9 target which is being debugged with openocd
(version: 0.9.0-dev-00186-g30203b3-dirty (2014-11-11-17:05)) and an
Olimex ARM-USB-OCD-H.
In general openocd works fine and I am very happy this tool exists!
The problem is I cannot step through Linux kernel code, I'm probably doing
something wrong or missing something. To be precise: after setting a
hardware breakpoint and when it is hit, it is not possible to step through
the Linux kernel code.

This is the exact scenario (including gdb tracing):

run linux kernel on ARM Cortex-A9 target

start openocd [target is halted]

start arm-linux-gdb and enter following commands:
(gdb) symbol-file vmlinux
(gdb) target remote localhost:3333
Remote debugging using localhost:3333
cpu_v7_do_idle () at arch/arm/mm/proc-v7.S:74
74              mov     pc, lr
(gdb) hbreak sys_sync
Hardware assisted breakpoint 1 at 0xc00a14dc: file fs/sync.c, line 103.
(gdb) c


So far so good, the target is running. When executing 'sync' the breakpoint is
hit and I can continue with the gdb continue command. I can repeat this a couple
of times, it keeps working. Here's the corresponding ("set debug remote 1") 
trace:


Continuing.
Sending packet: $qTStatus#49...Packet received:
Sending packet: $Z1,c00a14dc,4#67...Packet received: OK
Packet Z1 (hardware-breakpoint) is supported
Sending packet: $vCont?#49...Packet received:
Packet vCont (verbose-resume) is NOT supported
Sending packet: $Hc0#db...Packet received: OK
Sending packet: $c#63...Packet received: T05
Sending packet: $g#67...Packet received: 
00000000945e9fbe01000000399d050001000000945e9fbec000000024000000a49200c0004070c100000000000000007d3cc510a85f70c1409100c0dc140ac013000080
Sending packet: $z1,c00a14dc,4#87...Packet received: OK

Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14d8,4#f2...Packet received: 6c4930c0
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14d8,4#f2...Packet received: 6c4930c0
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14d8,4#f2...Packet received: 6c4930c0
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14d8,4#f2...Packet received: 6c4930c0
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Breakpoint 1, sys_sync () at fs/sync.c:103
103     {
(gdb) c
Continuing.
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $Z0,c00a14e0,4#34...Packet received: OK
Packet Z0 (software-breakpoint) is supported
Sending packet: $Hc0#db...Packet received: OK
Sending packet: $c#63...Packet received: T05
Sending packet: $g#67...Packet received: 
0000000094dee8be01000000399d05000100000094dee8bec000000024000000a49200c0004070c10000000000000000a85f70c1a85f70c1409100c0e0140ac013000080
Sending packet: $z0,c00a14e0,4#54...Packet received: OK
Sending packet: $qTStatus#49...Packet received:
Sending packet: $Z1,c00a14dc,4#67...Packet received: OK
Sending packet: $Hc0#db...Packet received: OK
Sending packet: $c#63...Packet received: T05
Sending packet: $g#67...Packet received: 
0000000094dee8be01000000399d05000100000094dee8bec000000024000000a49200c0004070c10000000000000000a85f70c1a85f70c1409100c0e0140ac013000080

Program received signal SIGTRAP, Trace/breakpoint trap.
Sending packet: $z1,c00a14dc,4#87...Packet received: OK
Sending packet: $mc00a14e0,4#eb...Packet received: 10d82de9
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14e0,4#eb...Packet received: 10d82de9
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14e0,4#eb...Packet received: 10d82de9
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14e0,4#eb...Packet received: 10d82de9
Sending packet: $mc00a14dc,4#1d...Packet received: 0dc0a0e1
Sending packet: $mc00a14e0,4#eb...Packet received: 10d82de9
Sending packet: $mc00a14e0,4#eb...Packet received: 10d82de9
Sending packet: $mc00a14e0,4#eb...Packet received: 10d82de9



The problem occurs when I want to step through the code with stepi, step or 
next.
In this case gdb & target seems to hang. Here's the corresponding ("set debug 
remote 1") trace:



0xc00a14e0 in sys_sync () at fs/sync.c:103
103     {
(gdb) step
Sending packet: $qTStatus#49...Packet received:
Sending packet: $Z1,c00a14dc,4#67...Packet received: OK
Sending packet: $mc00a14e0,4#eb...Packet received: 10d82de9
Sending packet: $mc00a14e0,4#eb...Packet received: 10d82de9
Sending packet: $Z0,c00a14e4,4#38...Packet received: OK
Sending packet: $c#63...Packet received: T05
Sending packet: $g#67...Packet received: 
0000000094dee8be01000000399d05000100000094dee8bec000000024000000a49200c0004070c10000000000000000a85f70c1945f70c1409100c0e4140ac013000080
Sending packet: $z0,c00a14e4,4#58...Packet received: OK
Sending packet: $qTStatus#49...Packet received:
Sending packet: $mc00a14e4,4#ef...Packet received: 04b04ce2
Sending packet: $mc00a14e4,4#ef...Packet received: 04b04ce2
Sending packet: $Z0,c00a14e8,4#3c...Packet received: OK
Sending packet: $c#63...Packet received: T05
Sending packet: $g#67...Packet received: 
0000000094dee8be01000000399d05000100000094dee8bec000000024000000a49200c0004070c10000000000000000a85f70c1945f70c1409100c0e4140ac013000080
Sending packet: $z0,c00a14e8,4#5c...Packet received: OK
Sending packet: $qTStatus#49...Packet received:
Sending packet: $mc00a14e4,4#ef...Packet received: 04b04ce2
Sending packet: $mc00a14e4,4#ef...Packet received: 04b04ce2
Sending packet: $Z0,c00a14e8,4#3c...Packet received: OK
Sending packet: $c#63...Packet received: T05
Sending packet: $g#67...Packet received: 
0000000094dee8be01000000399d05000100000094dee8bec000000024000000a49200c0004070c10000000000000000a85f70c1945f70c1409100c0e4140ac013000080
.
.
.
this keeps repeating.


Btw. when using a software breakpoint it doesn't work at all, after hitting the
breakpoint for the first time, the gdb continue command always results in a new
"breakpoint hit".

------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to