Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8180
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2015-02-03 10:03
个人简介

简简单单的生活,简简单单的我

文章分类
文章存档

2018年(1)

2017年(1)

我的朋友

分类: LINUX

2018-02-06 11:09:39

■カレントフォルダのライブラリの利用
.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) |
0

上一篇:linux下查看函数的调用关系

下一篇:没有了

给主人留下些什么吧!~~