■カレントフォルダのライブラリの利用
.gdbinitってファイルをcoreと同じディレクトリにつくる
内容は
set solib-search-path .
set solib-absolute-prefix .
15:11 () カレントに ./opt/FJSVrdb2b/lib ./lib64 などの構成をつくってコピーする
15:12 () gdbのversionが7よりも新しい場合は
15:12 () set solib-search-path .
15:12 () set solib-absolute-prefix .
15:12 () ではなくて
15:12 () set sysroot .を使う
15:12 () を試します
■コアファイルのスタックトレース
A) gdb /opt/FJSVawjbk/jdk5/bin/java core-java.542の絶対パス
B)サブコマンド
set pagination off
set logging file gdb.txt
set logging on
t a a bt
quit
C)gdb.txtを送ってください
■複数のスレッド
(gdb) info threads
61 process 1403386 0xff2cd288 in _sys_errs () from /lib/libc.so.1
60 process 1337850 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
59 process 1272314 0xff2cd288 in _sys_errs () from /lib/libc.so.1
58 process 1206778 0xff2cd790 in _sys_errs () from /lib/libc.so.1
57 process 1141242 0xff2cd790 in _sys_errs () from /lib/libc.so.1
56 process 1075706 0xff2cd790 in _sys_errs () from /lib/libc.so.1
55 process 1010170 0xff2cd790 in _sys_errs () from /lib/libc.so.1
54 process 944634 0xff2c9a5c in _t_cancel () from /lib/libc.so.1
53 process 879098 0xff2cd790 in _sys_errs () from /lib/libc.so.1
52 process 813562 0xff2cd790 in _sys_errs () from /lib/libc.so.1
51 process 748026 0xff2cd790 in _sys_errs () from /lib/libc.so.1
50 process 682490 0xff2cd790 in _sys_errs () from /lib/libc.so.1
49 process 616954 0xff2cd790 in _sys_errs () from /lib/libc.so.1
48 process 551418 0xff2cd790 in _sys_errs () from /lib/libc.so.1
47 process 485882 0xff2cd790 in _sys_errs () from /lib/libc.so.1
46 process 420346 0xff2cd790 in _sys_errs () from /lib/libc.so.1
45 process 354810 0xff2cd790 in _sys_errs () from /lib/libc.so.1
44 process 289274 0xff2cd790 in _sys_errs () from /lib/libc.so.1
43 process 223738 0xff2cd790 in _sys_errs () from /lib/libc.so.1
42 process 158202 0xff2cd790 in _sys_errs () from /lib/libc.so.1
41 process 92666 0xff2c9a5c in _t_cancel () from /lib/libc.so.1
40 process 4352506 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
39 process 4286970 0xff2cd6dc in _sys_errs () from /lib/libc.so.1
---Type to continue, or q to quit---
38 process 4221434 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
37 process 4155898 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
36 process 4090362 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
35 process 4024826 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
34 process 3959290 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
33 process 3893754 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
32 process 3828218 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
31 process 3762682 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
30 process 3697146 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
29 process 3631610 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
28 process 3566074 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
27 process 3500538 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
26 process 3435002 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
25 process 3369466 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
24 process 3303930 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
23 process 3238394 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
22 process 3172858 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
21 process 3107322 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
20 process 3041786 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
19 process 2976250 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
18 process 2910714 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
17 process 2845178 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
16 process 2779642 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
---Type to continue, or q to quit---
15 process 2714106 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
14 process 2648570 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
13 process 2583034 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
12 process 2517498 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
11 process 2451962 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
10 process 2386426 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
9 process 2320890 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
8 process 2255354 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
7 process 2189818 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
6 process 2124282 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
5 process 2058746 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
4 process 1993210 0xff2cd7d0 in _sys_errs () from /lib/libc.so.1
3 process 1927674 0xff2c9a5c in _t_cancel () from /lib/libc.so.1
2 process 1862138 0xff2cd288 in _sys_errs () from /lib/libc.so.1
* 1 process 1731066 0xff2cd6ac in _sys_errs () from /lib/libc.so.1
(gdb) thread 1
[Switching to thread 1 (process 2712)]#0 0x0000003fc7830215 in raise ()
from /Maintain/incident/014-1031-1252/core/libc.so.6
(gdb) bt
#0 0x0000003fc7830215 in raise ()
from /Maintain/incident/014-1031-1252/core/libc.so.6
#1 0x0000003fc7831cc0 in abort ()
from /Maintain/incident/014-1031-1252/core/libc.so.6
#2 0x0000003fc786a7fb in __libc_message ()
from /Maintain/incident/014-1031-1252/core/libc.so.6
#3 0x0000003fc7871ce2 in _int_free ()
from /Maintain/incident/014-1031-1252/core/libc.so.6
#4 0x0000003fc787590c in free ()
from /Maintain/incident/014-1031-1252/core/libc.so.6
#11 0x00002b5b9d772542 in ?? ()
---Type to continue, or q to quit---
#12 0x00002b5b9d768efe in ?? ()
#13 0x0000000000000012 in ?? ()
#14 0x0000000000000000 in ?? ()
(gdb) info frame 4
Stack frame at 0x7fff112f0390:
rip = 0x3fc787590c in free; saved rip 0x2aaaaf9c9422 called by frame at 0x7fff112f03b0, caller of frame at 0x7fff112f0350 Arglist at 0x7fff112f0348, args:
Locals at 0x7fff112f0348, Previous frame's sp is 0x7fff112f0390 Saved registers:
rbx at 0x7fff112f0378, rbp at 0x7fff112f0380, rip at 0x7fff112f0388 ?Arglist ?
112f0348 c787590c 0000003f 5c0fb818 00000000 .Y..?......\....
↑ebp? ↑復帰値?
112f0358 00000000 00000000 000007cf 00000000 ................
↑第一引数?
112f0368 5b7e58b0 00020000 00003e78 00000000 .X~[....x>......
(gdb) thread 2
[Switching to thread 2 (process 1862138 )]#0 0xff2cd288 in _sys_errs ()
from /lib/libc.so.1
(gdb) bt
#0 0xff2cd288 in _sys_errs () from /lib/libc.so.1
#1 0xff2bcf8c in posix_spawnattr_getschedparam () from /lib/libc.so.1
#2 0xff2bcf8c in posix_spawnattr_getschedparam () from /lib/libc.so.1
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) quit
bash-3.00#
14:41 () gdbをオプションなしで起動
14:41 () gdbが起動したら
14:41 () (gdb)set solib-search-path .
14:41 () (gdb)set solib-absolute-prefix .
14:41 () (gdb)file java
14:41 () (gdb)core-file core_java.29253
14:41 () を実行
dis ccc.so >cccc.dis
cccc.disの中身
disassembly for ccccc.so
section .text
184c8: 00 00 00 00 illtrap 0x0
184cc: 00 00 00 00 illtrap 0x0
184d0: 00 00 00 00 illtrap 0x0
184d4: 00 00 00 00 illtrap 0x0
dddd()
dddd: 03 00 00 20 sethi %hi(0x8000), %g1
dddd+0x4: 82 18 7f 30 xor %g1, -0xd0, %g1
dddd+0x8: 9d e3 80 01 save %sp, %g1, %sp
dddd+0xc: 40 00 00 02 call dddd+0x14
dddd+0x10: 9e 10 00 0f mov %o7, %o7
dddd+0x14: 37 00 05 7b sethi %hi(0x15ec00), %i3
dddd+0x18: 15 00 00 20 sethi %hi(0x8000), %o2
dddd+0x1c: b6 06 e2 5c add %i3, 0x25c, %i3
dddd+0x20: 90 10 00 1a mov %i2, %o0
dddd+0x24: b8 06 c0 0f add %i3, %o7, %i4
dddd+0x28: 40 05 7b 9f call dddd+0x14
dddd+0x2c: 92 10 20 00 clr %o1
-F function で関数指定 をすれば、修正した関数のアセンブラが出力できる
これと、修正箇所した関数を、xxxでコンパイルしたオブジェクト
の逆アセンブラ(*1)とを比較することで、
正しく反映されてるかが確認できると思う。
*1
1)該当オブジェクトを削除
2)コンパイル
3)ログから該当のコンパイルオプションを探す
4)-Sを追加してコンパイル
5)アセンブラとソースの混合ファイルのXXXX.sファイルが出力される
例
/opt/SUNWspro/bin/cc -S -c -xarch=v8 -O -xregs=no%appl -xc99=none
-DRDB2BICONV -I../../../osinc -I../../../include -xO2 -D_REENTRANT -DSolaris xxxx.c
xxxx.sで吐き出される
objdump -d /lib/xxxxx.so
http://blog.csdn.net/yhhah/article/details/5613657
pstack core more
dbx java core
$lwps
$lwp l@58
$where
$threads -all
$thread t@58
$where
dmesg
mdb core.4226
> ::walk thread | ::findstack
> ::quit
1)修正前の32bitモジュール(リリース版)
2)修正前の64bitモジュール(リリース版)
3)仮修正したパターンの64bitモジュール(リリース版)
-方法
1)dbxデバッガでー該当箇所(落ちる直前)でbreakをいれる
2)listかdisでアセンブラを表示
500行目から510行までのソースとアセンブを出す場合
(ソースがでるのはデバッグ版でコンパイルした場合だけかも)
list -i 500 +10
カレント行から、30命令文のアセブラを出す場合
dis /30
16:32 () ライブラリは以下の方法
16:32 () coreが出力されたシステムにおいてgdbコマンドを実行し、異常終了時に使用し
16:32 () ていた
16:32 () ライブラリを特定します。
16:32 () gdbコマンドに出力されたcoreファイルおよびロードモジュール
16:32 () を指定し、サブコマンドinfo sharedlibraryを実行しロードされていたライブラ
16:32 () リを特定してください。
16:45 () バックトレース(gdb のt a a btの結果)もいれてもらえますか?
阅读(2195) | 评论(0) | 转发(0) |