This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: Stack Trace and running task when exception occurs -
On Sun, Sep 09, 2007 at 06:36:55PM +0200, Andrew Lunn wrote:
> On Sun, Sep 09, 2007 at 04:32:10PM +0530, Alok Singh wrote:
> >
> > Hi,
> >
>
> > Does eCos provides the details of the task that was running when
> > exception occurred? I think I know that it doesn't, but just wanted
> > to get your views?? Or is there a way to get this information
> > without altering (enhancing) the current eCos code.
>
> It depends on what details you want. cyg_thread_self() will tell you
> the current thread. However, be careful, it could of been an ISR/DSR
> that caused the exception, not the thread.
>
> If you have a hardware exception, eg /0, sigfault etc, the info
> parameter passed to the exception handler may be the saved
> registers. This is architecture dependent. eg look at
> packages/hal/arm/arch/current/src/hal_misc.c lines 136-158 and follow
> the code patch though into your exception handler.
>
> Andrew
If ARM arch. is yours, try to build and run the eCos exception test:
kernel/tests/except1, without (default) and then with this option
# Provide diagnostic dump for exceptions
# Print messages about hardware exceptions, including
# raw exception frame dump and register contents.
#
cdl_option CYGHWR_HAL_ARM_DUMP_EXCEPTIONS {
# Flavor: bool
# No user value, uncomment the following line to provide one.
user_value 1
# value_source default
# Default value: 0
# Requires: !CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
# CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
# --> 1
}
With the option is turned on, you will get info about the latest CPU
state (PC, registers, stack frame).
Sergei
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss