This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Thread debugging sans stubs
- To: ecos-discuss at sources dot redhat dot com
- Subject: [ECOS] Thread debugging sans stubs
- From: Grant Edwards <grante at visi dot com>
- Date: Tue, 2 Oct 2001 18:08:32 -0500
I've got a thread that stops running occasionally, and I'm
trying to figure out why. Since I'm using a JTAG interface, I
don't have the thread support provided by GDB stubs. I can
print out the thread object, but don't know how to interpret
it. Is there any documentation that explains how to figure out
things like the thread's current IP, and if/why the thread is
blocked?
For example, my dead thread is shown below. I've verified
things like the stack, entry point, name, and so on...
(gdb) print 'rpshsi.c'::TcpRxThread
$2 = {
hwthread = {
stack_base = 606612,
stack_size = 4096,
stack_limit = 606612,
stack_ptr = 610428,
entry_point = 34124,
entry_data = 0,
saved_context = 0x0
},
schedthread = {
next = 0x910e8,
prev = 0x910e8,
priority = 8,
queue = 0x27bcf8,
mutex_count = 2,
original_priority = 8,
priority_inherited = 0
},
state = 1,
suspend_count = 0,
wakeup_count = 0,
wait_info = 610276,
unique_id = 7,
timer = {
alarm = {
next = 0x26731c,
counter = 0x132040,
alarm = 0x2207c <Cyg_ThreadTimer::alarm(Cyg_Alarm *, unsigned int)>,
data = 594228,
trigger = 1073,
interval = 0,
enabled = 0
},
thread = 0x910e8
},
sleep_reason = 1,
wake_reason = 0,
thread_data = {0, 0, 0, 0, 0, 0},
name = 0x71a90 "TcpRx",
list_next = 0x90fb0
}
--
Grant Edwards
grante@visi.com