Debug server BSFN on iSeries - 9.1.4.5

jolly

Reputable Poster
Hi All,

I need to use the iSeries debugger as a BSFN is crashing on the E910 server but runs without any issues at all locally on a workstation. The same function used to work fine pre-upgrade on E812 servers. (According to the kernel callstack it is failing in code beneath JDB_FetchAggregate)

I have Oracle document Doc ID 650738.1 which explains how to do this kind of debugging and it mentions 8.93 onwards... but I think the way SVRPGMs and CMODULEs are stored is different in later tools releases such as 9.1.x.... The CRTCMOD function is complaining that source file can't be found ...

Can anyone comment or advise? Can't see anything on the KG....

Thanks
JohnO
 

craig_welton

Legendary Poster
John,

I don't mean to hijack this thread, but are you aggregating several columns in your query? I found when doing that on the iSeries, the fetch API would crash (I believe I was trying to use 12 columns). Works fine locally though. Ended up reworking the solution because of it. This was 8.98.4.2 tools.

Craig
 

slandess

Well Known Member
Hi All,

I need to use the iSeries debugger as a BSFN is crashing on the E910 server but runs without any issues at all locally on a workstation. The same function used to work fine pre-upgrade on E812 servers. (According to the kernel callstack it is failing in code beneath JDB_FetchAggregate)

I have Oracle document Doc ID 650738.1 which explains how to do this kind of debugging and it mentions 8.93 onwards... but I think the way SVRPGMs and CMODULEs are stored is different in later tools releases such as 9.1.x.... The CRTCMOD function is complaining that source file can't be found ...

Can anyone comment or advise? Can't see anything on the KG....

Thanks
JohnO

John -

The default for the CRTCMOD command is DBGVIEW(*NONE).
You will need to recompile the C module with a different option such as DBGVIEW(*ALL) in order to be able to debug it.

Regards,
Steve Landess
Austin, Texas
512-289-0387
 

jolly

Reputable Poster
Hi Craig,

Yes, and thanks for hijacking in this case!!!

I am doing a query along the lines of SELECT INFY, SUM(INNQ01), SUM(INNQ02), ... SUM(INNQ12) FROM F41112 GROUP BY INFY

It works fine on local web, and worked on 812. At this customer, it is working on PY910 but the data may be different or no rows returned etc.

I found a Oracle bug on earlier releases for JDB_SetAggregate but nothing for 9.1 and raised the case with Oracle. Because it wasn't failing on iSeries on PY910 they've fobbed me off with this debugging malarkey but it could be just that the data doesn't exist in PY910 manifest the bug.

Cheers
John
 

jolly

Reputable Poster
Thanks Steve...

But before I get that far, I need to find the source on the server - CRTCMOD command from the KG doc gives an error - it seems the source member is no longer (9.1.4.5) in the same place as it was at the time the doc was written for (8.9.3). So the support desk told me to use
CRTCMOD MODULE(pkglib/B560010) SRCFILE(pkglib/CCUSTOM)

but that makes no sense. There is no source member in any of those places. I tried both the latest update package with the object and the latest full package.

Cheers
JohnO
 

jolly

Reputable Poster
My case with Oracle has been escalated to "Development" so now is with the big guns. Big but slow...
 

oneEyedJack

Member
The source for packages is stored in the IFS. You need to specify the source stream file, not a source member. You'll also need to ensure you have the correct include directories that match the package, the parent package, the system include directory and the system includea directories.
 

jolly

Reputable Poster
Hi OEJ,

Thanks - you got it... I just wasn't looking hard enough in the IFS before ... the location was /OneWorld/Packages/PY150324U/source/CCUSTOM/B560010.c, and I needed to use the SRCSTMF parameter.

Just need to pass in the correct compiler flags to see all the right include folders. In the old days you could find these in the server JDE.INI file - wonder if that's still there...
 

jolly

Reputable Poster
Hi All,

I did eventually get callObject debugging on the iSeries E91 server working... in case anyone is interested here's an attached summary of how to do this:

I do still have some questions to answer before I do this on the customers production server (the issue cannot be replicated in test)... Each callobject kernel typically has several users connected and I cannot stop their work. If I attach to the kernel and stop at a breakpoint, will it stop the other users in their threads?

Is there a way (without affecting production) to get allocated a kernel without other users connected?

Thanks
JohnO
 

Attachments

  • Debugging iSeries callObject kernels.zip
    275.3 KB · Views: 20

JEMILLER

VIP Member
Hi John,

I figure the iSeries debugger is capable of debugging multi-threaded processes but I wouldn't trust it to have no impact on the other user threads.

You can force 1 user per kernel. This used to be a all or nothing setting where every user would get their own Call Object kernel. It was not a scalable approach. With a big concurrent user base it wasn't safe to use in Production. This document -> E1: KER: How to Set Up Exclusive Call Object Kernel for a Specific User (Doc ID 1348748.1) describes a newer setup which I have not used yet. It seems smarter. Once you enable Single User support on the Enterprise server you can then provide a user or users who will get their own Call Object kernel in the HTML Server. The other users will continue with multi-threaded kernels.
 

jolly

Reputable Poster
Hi Justin, this is fantastic.

I had gone to Oracle and escalated this question to development but the best they could come back with was ... put debug logging statements in your code!!!

It's official, Justin knows more than Oracle about JDE :-D

Thanks
John
 
Top