Boost logo

Boost :

From: Hendrik Schober (boost_at_[hidden])
Date: 2002-06-20 11:33:10

"Ted Byers" <r.ted.byers_at_[hidden]> wrote:
> [...]
> So then, something like my traceable exceptions may work for you, if you're
> willing to add a couple automatic string variables and one macro at the
> beginning of each function [...]

  Why that string? That's (approximately) how I do it:

    # define ERROR_STACKTRACE_BEGIN {const unsigned int _error_exc_stack_trace_line=__LINE__;try{
    # define ERROR_STACKTRACE_END }catch(...){Error::Detail::addStackTrace(STACK_HERE(_error_exc_stack_trace_line));throw;}}

  where 'STACK_HERE' is

    # define STACK_HERE(begin) __FILE__, \
                                 begin, __LINE__, \
                                 COMPILER_FEATURE_FUNCTION_MACRO, \
                                 __DATE__, __TIME__
    # define STACK_HERE(begin) __FILE__, \
                                 begin, __LINE__, \
                                 __DATE__, __TIME__

  (I don't believe in everybody always thinking of
  changing manually added function name string literals.
  I think it's either automagic, or it's error prone.)

> Hopefully I will get a
> simple example put together and sent to Schobi showing how I use this RSN
> (I'd be faster with this if I didn't have to earn a living ;-)).

  Yeah, it's easier for me to upload it, isn't it? <g>

> [...] Have you written signal
> handlers that deal with the various sorts of hardware or OS error that might
> occur and need to be handled? If so, what do you think of the idea of
> trapping these signals and converting them into exceptions (giving the
> exception all the information you can collect at the point the signal is
> raised), and then throwing and converting these into traceable exceptions?

  There isn't much that you're allowed to do in a
  signal handler. Throwing exceptions isn't among
  that. (AFAIK, you might not even have a valid stack
  frame within a signal handler.)

> Cheers,
> Ted


Boost list run by bdawes at, gregod at, cpdaniel at, john at