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.22 20:54:00


I just looked at the description of __le_traceback().

It looks as if it can be called with the DSA from the CIB; this way, it should
give you all the information you need, IMO.

In the calling example we have:

tbck_parms.__tf_dsa_addr = 0;

this should be changed for our situation, I think.

Kind regards

Bernd


Am 22.01.2015 um 20:42 schrieb Bernd Oppolzer:
> Am 22.01.2015 um 20:22 schrieb C.M.:
>> Thanks! Do you have any idea whether __le_traceback will produce meaningful
>> results in a situation in which CEE3DMP does not output a useful traceback?
>> The C++ stack has apparently already been unwound when C++ enters a catch()
>> block. The catch() block appears to have been called from the point at which
>> the try block was entered.
>
> See my previous post, too.
>
> If __le_traceback starts from the current stack frame, then of course it will
> not show you the information of the stack frames below the catch-Block,
> which have already been unwound.
>
> On the other hand: if our assumptions so far regarding the contents of the
> CIB are correct, then the CIB should contain the register information at the
> time of the exception, that is: for example the register 13 at the time of the
> error. I believe (!!) that the stack frames below the catch block still exist
> and if there is a way to call __le_traceback with a parameter (the starting
> stack_frame), you should be able to get that starting point from the CIB
> and start it from there.
>
> We had at our site a function called ccback () which did exactly that.
> And, of course, we called it before there was some unwinding of stack frames.
>
> I would as a first step try to print the contents of the EPIE inside the CIB and
> see if it fits well with the stack frame of the function containing the exception
> (see register 13 and compare it to the address of the DSA).
>
> Kind regards
>
> Bernd
>
>
>> C.
>>
>> -----Original Message-----
>> From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
>> Behalf Of D.P.
>> Sent: Thursday, January 22, 2015 11:09 AM
>> To: IBM-MAIN@LISTSERV.UA.EDU
>> Subject: Re: In C++ any way to get traceback info in a catch()?
>>
>> The CIB is described in __le_api.h. There's a useful function for producing
>> tracebacks, __le_traceback. The doc has sample code calling it in C.
>>
>> https://www-304.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r
>> 1.bpxbd00/letraceback.htm?lang=en
>>
>> ----------------------------------------------------------------------
>> For IBM-MAIN subscribe / signoff / archive access instructions,
>> send email to listserv@listserv.ua.edu with the message: INFO IBM-MAIN
>>
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to listserv@listserv.ua.edu with the message: INFO IBM-MAIN
>

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