This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Thread debugging sans stubs



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]