Oppolzer - Informatik / Blog


Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie

IBM-MAIN - Kein Traceback bei Aufruf CEEDUMP in catch()-Routine in C++

Subject:

Re: In C++ any way to get traceback info in a catch()?

From:

Bernd Oppolzer <bernd.oppolzer@T-ONLINE.DE>

Reply-To:

IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU>

Date:

2015.01.23 10:13:00


Am 23.01.2015 um 02:53 schrieb S.S.:
> On Jan 22, 2015 4:53 PM, C.M. wrote:
>> Ah, thanks. I keep forgetting that. Oddly named manual, IMHO.
>>
>> Anyway, I don't think I have a CIB. I think this condition is totally
> internal to C++ -- not an LE "condition."
>
> Please take at least a quick look at the le manuals.   As you know the
> c/c++ stack is implemented on top of le.
>
> Also le implements a full set of try/catch semantic that work across le
> enabled languages.   The c/c++ try/catch may be built on top of that.
>

I would like to second that;

I don't know it, but I believe (!!) that try / catch in C++ should be
implemented in such a way that a true LE condition is thrown, that is then
caught be "catch". I believe, you simply don't see it in your CEEDUMP, because
the traceback that is implemented there starts at a level that is too high
(above the level where the exception occured).

And for the other question regarding CIB_MACHINE:

IMO, the pointer CIB_MACHINE does not point anywhere outside the CIB structure,
but is marks a position inside the CIB, because the EPIE structure, which is the
"classical" outcome of a program interruption as a consequence of a ESPIE macro
call (PIE = program interruption exit), is part of the CIB = included in the
CIB.

And:

if __le_traceback is really AMODE 64, I would try two different things:

a) do the traceback myself, using a C variant of the ASSEMBLER logic I already
have in my dump analysis software (which may be hard for you), or

b) dont know, if this is possible, but maybe you can switch to AMODE 64, before
calling the __le_traceback routine? Maybe LE even has routines to do that?

HTH

Kind regards

Bernd

Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie