1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[AIX]dbxでcoreから環境変数を表示する方法

Posted at

dbxでcoreから環境変数を表示する方法

/usr/include/unistd.hに下記の変数があります。

extern char **environ;

このファイルをincludeしてアドレスを確認すると0x2ff22ff4であることが確認できます。(公開情報は見つかりませんでしたが、定数のようです。)

例)
printf("%08x\n", &environ);

**environのため、2回アドレスから値を表示します。

(dbx) 0x2ff22ff4/X
0x2ff22ff4:  30071538
(dbx) 0x30071538/X
0x30071538:  2ff22dc8

環境変数の個数は分からないため、30sや100sで多めに出力し、文字列の領域を確認します。

(dbx) 0x2ff22dc8/30s
0x2ff22dc8: "_=/opt/rsct/bin/rmcd"
0x2ff22ddd: "LANG=Ja_JP"
0x2ff22de8: "LOGIN=root"
0x2ff22df3: "CLCMD_PASSTHRU=1"
0x2ff22e04: "PATH=/opt/rsct/install/bin:/opt/rsct/bin:/usr/bin:/usr/sbin:/bin:/sbin"
0x2ff22e4b: "CORE_NAMING=1"
0x2ff22e59: "LC__FASTMSG=true"
0x2ff22e6a: "LOGNAME=root"
0x2ff22e77: "LOCPATH=/usr/lib/nls/loc"
0x2ff22e90: "USER=root"
0x2ff22e9a: "AUTHSTATE=compat"
0x2ff22eab: "SHELL=/usr/bin/ksh"
0x2ff22ebe: "ODMDIR=/etc/objrepos"
0x2ff22ed3: "HOME=/"
0x2ff22eda: "TERM=dumb"
0x2ff22ee4: "PWD=/"
0x2ff22eea: "TZ=JST-9"
0x2ff22ef3: "NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat:/usr/lib/nls/msg/%l.%c/%N:/usr/lib/nls/msg/%l.%c/%N.cat"
0x2ff22f65: ".%c"   <== ここから先は環境変数ではない。
0x2ff22f69: ""
0x2ff22f6a: ""

64bitの場合は定数値が0x0fffffffffffffd8になり、/Xの代わりに/llxで表示します。

(dbx) 0x0fffffffffffffd8/llx
0x0fffffffffffffd8:  ffffffffffffc80
(dbx) 0xffffffffffffc80/llx
0x0ffffffffffffc80:  ffffffffffffd1b

(dbx) 0xffffffffffffd1b/30s
0x0ffffffffffffd1b: "TERM=dumb"
0x0ffffffffffffd25: "AUTHSTATE=compat"
0x0ffffffffffffd36: "SHELL=/usr/bin/ksh"
0x0ffffffffffffd49: "HOME=/"
0x0ffffffffffffd50: "USER=root"
0x0ffffffffffffd5a: "PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java8_64/jre/bin:/usr/java8_64/bin:/ptools/bin"
0x0ffffffffffffdc7: "TZ=JST-9"
0x0ffffffffffffdd0: "LANG=Ja_JP"
0x0ffffffffffffddb: "LOCPATH=/usr/lib/nls/loc"
0x0ffffffffffffdf4: "LC__FASTMSG=true"
0x0ffffffffffffe05: "ODMDIR=/etc/objrepos"
0x0ffffffffffffe1a: "CLCMD_PASSTHRU=1"
0x0ffffffffffffe2b: "CORE_NAMING=1"
0x0ffffffffffffe39: "LOGNAME=root"
0x0ffffffffffffe46: "LOGIN=root"
0x0ffffffffffffe51: "NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat:/usr/lib/nls/msg/%l.%c/%N:/usr/lib/nls/msg/%l.%c/%N.cat"
0x0ffffffffffffec3: "/usr/"

余談ですが、argvは環境変数の上にあるため、下記のように少し上から表示することで確認できます。
kshがcoreを吐いた場合にスクリプト名を確認できる場合があります。

(dbx) 0x2ff22dc8-0x80/30s
(略)
0x2ff22d98: "/opt/rsct/bin/rmcd"
0x2ff22dab: "-a"
0x2ff22dae: "IBM.LPCommands"
0x2ff22dbd: "-r"
0x2ff22dc0: "-S"
0x2ff22dc3: "1500"
0x2ff22dc8: "_=/opt/rsct/bin/rmcd"
(略)
1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?