ダンプリスト解析入門④

By 神居 - Posted: 2012/09/20 Last updated: 2012/09/28 - Leave a Comment

ダンプリスト解析入門④:ABENDの原因を調べる&#9313

レジスターセーブエリア・トレース

プログラムが1つのモジュール(CSECT)しか持たない場合や、複数のモジュールで構成されていても動的構造プログラム(プログラムを構成するモジュールが1つ1つ独立したロードモジュール・メンバーでLOADあるいはLINKマクロによってローディングされる)では、どのモジュールでABENDしたのかが徴候(SYMPTOM)ダンプにその名前が表示されます。これは、JCL EXECステートメントのPGMパラメーターで指定されたモジュールや、LOADあるいはLINKなどスーパーバイザー経由でローディングされたモジュールについては、OSがローディング・アドレスとモジュールの長さを管理しているからです。
しかし、単純構造プログラムで複数のCSECTモジュールがリンケージエディターで結合されている場合、OSは結合されたモジュール全体は認識できますが、その中の個々のCSECTまでは管理しないので、ABENDした場合、徴候ダンプに表示されるモジュール名は結合されたモジュール名(例えばEXEC PGM=に指定した名前)になり、その中のどれかのモジュールでABENDしたけど、それがどのモジュールなのかはOSにはわからないよ。となります。

このような場合、ABENDした具体的なモジュール名(CSECT名)を特定するには、リンケージエディターのリストからプログラムを構成する各々のCSECTの結合されたモジュール内におけるオフセット位置と徴候ダンプが示すオフセット位置を照らし合わせる方法があります。リンケージエディターのリストが保存されていない場合は、AMBLISTユーティリティーのLISTLOAD機能でCSECTマップを出力し、それを参照できます。

ダンプリストだけで調査する場合は、レジスターセーブエリア・トレース(SAトレース)を参照する方法があります。

複数のCSECTモジュールを静的にリンクしたプログラム・モジュールでも、リンケージエディターやAMBLISTのCSECTマップ、ダンプリストのSAVE AREA TRACEなどからABENDしたCSECTモジュールやそれを呼び出したモジュールを特定することができます。ABENDしたモジュールがわかれば、後はレジスターとメモリーの内容から原因を調査していきます。

Posted in ダンプ解析入門 • • Top Of Page