Getting Disassembly output on Unix platforms

作者: Maclean Liu , post on June 4th, 2010 , English Version
【本站文章除注明转载外,均为本站原创编译】
转载请注明:文章转载自: Oracle Clinic – Maclean Liu的个人技术博客 [http://www.oracledatabase12g.com/]
本文标题: Getting Disassembly output on Unix platforms
本文永久地址: http://www.oracledatabase12g.com/archives/getting-disassembly-output-on-unix-platforms.html

Introduction

~~~~~~~~~~~~

This short article explains how to disassemble code on

various Unix machines , generally from the “oracle” executable.

Typically this may be needed to help progress an ORA-7445 or

core dump issue in order to help confirm the exact code which is

failing.

You should have been given the name of the executable and

the name/s of functions for which disassembly is required.

See Note:211909.1 for an introduction to ORA-7445 errors.

Typically for ORA-7445 type errors the disassembly required

is for the top 2 or 3 significant functions in the call stack.

Why might disassembly output be needed ?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Although the exact version and patch information should identify

the exact code in use at the time of a problem the disassembly

output can be helpful for several reasons:

- Sometimes patches thought to be applied are not

installed correctly and so the executing code is not

exactly what is expected.

- On older versions of Oracle there was no proper

mechanism to track which patches were applied

- Some patches are superceded by slightly modified

versions and so installed code may differ from

current copies.

- Some combinations of code / patches may take time

set up inside Oracle . In cases where the disassembly

is needed to help progress an issue this can add

needless delay given that the exact code combination

is already in use at the customer site.

Obtaining disassembly output

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

It is important the the executable in use at the time of the

problem is used or false assumptions may be taken. Hence it is

usually best to obtain disassembly data as close to any problem

as possible.

1) Determine which disassembler exists on your machine from the

table below.

2) Given an executable name “exec” and a function name “func”

use the relevant instructions to get the disassebled output

thus:

script _.asm

Use the relevant debugger commands here

Exit the debugger

exit

Repeat the above for each function for which disassembly

is required. This helps to keep each disassembled funtion

in its own file.

Table of debuggers and disassembly instructions

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Command NB Exit command Disassembly commands

——- — ———— ——————-

dbx (Solaris) quit dis

dis +

dbx (AIX) quit & /1000i

./1000i

gdb (HPUX/Linux) quit set pagination off

disassemble

ladebug (Tru64) quit &/1000i

# keep pressing

adb $q (or Ctrl-D) ?i

# keep pressing

mdb (Solaris) $q ?i

# keep entering “+/i”

Example commands to disassemble “ksedmp” in “oracle”:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

***********************************************************

NOTE that these are EXAMPLES for disassembling “ksedmp”.

You should replace “ksedmp” with the function name

that you want to disassemble.

eg: If asked to disassemble opifch then replace “ksedmp”

in the examples below with “opifch”.

***********************************************************

DBX on Solaris:

~~~~~~~~~~~~~~~

$ script /tmp/oracle_ksedmp.asm

$ dbx $ORACLE_HOME/bin/oracle

(dbx) dis ksedmp /1000

0x001b1388: ksedmp : save %sp, -0xe8, %sp

0x001b138c: ksedmp+0×0004: call kslcvt

( if the output function name has not changed in the output

then enter “dis + /1000″ until the output changes to be

disassembly for a different function.

eg: )

(dbx) dis +

0x001b2304: ksedst+0x02b8: add %g3, %g2, %g2

(dbx) quit

$ exit

DBX on AIX:

~~~~~~~~~~~~~~~

$ script /tmp/oracle_ksedmp.asm

$ dbx $ORACLE_HOME/bin/oracle

(dbx) &ksedmp /1000i

0x1000b5f0c (ksedmp) 7c0802a6 mflr r0

0x1000b5f10 (ksedmp+0×4) fbc1fff0 std r30,-16(r1)

( if the output function name has not changed in the output

then enter “. /1000i” until the output changes to be

disassembly for a different function.

eg: )

(dbx) ./1000i

0x1000b6ef8 (ksefic+0x6c) 38630070 addi r3,0×70(r3)

(dbx) quit

$ exit

GDB:

~~~~~

$ script /tmp/oracle_ksedmp.asm

$ gdb $ORACLE_HOME/bin/oracle

(gdb) set pagination off

(gdb) disassemble ksedmp

0x082b5f8a : push %ebp

0x082b5f8b : mov %esp,%ebp

( if pagination did not disable then you may need to press

return several times here )

(gdb) quit

$ exit

ADB:

~~~~~

(NOTE: Most versions of adb give no command prompt so just type in

the commands shown after the (adb) example prompt below )

$ script /tmp/oracle_ksedmp.asm

$ adb $ORACLE_HOME/bin/oracle

(adb) ksedmp?i

ksedmp:

ksedmp: save %sp, -0x1a0, %sp

( Keep pressing return until the leading function name

changes. This is preferable to using func/1000i or similar

as giving a count in that form does not show the offset

of each assembly instruction in most versions of adb

which makes the output hard to use. Pressing return

continually gets function + offset information for each

instruction )

(adb) $q

$ exit

LADEBUG :

~~~~~~~~~

$ script /tmp/oracle_ksedmp.asm

$ ladebug $ORACLE_HOME/bin/oracle

(ladebug) &ksedmp /20i

ksedmp(void): kse.c

[line 2093, 0x121108fd0] ldah gp, 7967(r27)

[line 2093, 0x121108fd4] ldq_u r31, 0(sp)

( You probably have to press return after each pages.

Watch the output for a new function name occuring

and interrupt when seen. If more output is needed

now the last address and then ADDR/1000i again.

eg:

)

[line 2255, 0x121109480] …

(ladebug) 0×121109484/1000i

(ladebug) quit

$ exit

MDB:

~~~~~

(The mdb prompt is typically a “>” )

$ script /tmp/oracle_ksedmp.asm

$ mdb $ORACLE_HOME/bin/oracle

> ksedmp?i

ksedmp:

ksedmp: cmp %o0, 0x3e8

> +?i

ksedmp+4: bcs,pn %icc,+0×28

> +?i

ksedmp+8: mov 2, %o5

( Keep entering “+?i” until the leading function name

changes. This is preferable to using “func?1000i” or similar

as giving a count in that form does not show the offset

of each assembly instruction which makes the output hard to use.

Entering “+?i” continually gets function + offset information

for each instruction )

> $q

$ exit

~~~~~

Assuming this worked then the disassembly should be shown in the

file ‘/tmp/oracle_ksedmp.asm’. Upload all of the disassembled

output to Oracle Support along with any other information requested.

Common reasons for problems disassembling

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Stripped Executable

Some program executables are stripped of symbol information.

In this case some of the functions asked for may not have

symbol information in the executable itself.

If “file executable” shows the word ‘stripped’ or ‘nm executable’

shows no output then it is likely that the executable is stripped

of symbolic information.

In this case the problem tool must be relinked without being

stripped – on most Unix platforms this involves ensuring there is

no ‘-s’ option on the link line. Contact Oracle Support with

details of the link line used to link the tool.

Function is in a shared library

In some cases the function to be disassembled may be in a

shared library and so is not available by attaching a

debugger to the oracle executable. In many cases the

library can be mapped and made available by setting a

breakpoint in “main” and then running the oracle executable -

execution should stop as soon as main() is entered and

usually the shared library will then be mapped to allow

disassembly.

eg: In dbx

dbx $ORACLE_HOME/bin/oracle

stop in main

run

^ debugger stops again quickly. Then continue

with the disassembly commands.

In gdb

gdb $ORACLE_HOME/bin/oracle

break main

run

^ debugger stops again quickly. Then continue

with the disassembly commands.

In adb

adb $ORACLE_HOME/bin/oracle

main:b

:r

^ debugger should stop here. Then continue

with disassembly commands.

If the disassembly commands still do

not seem to work try “func/i” instead of

“func?i” . ie: Change the “?” in the

commands to a “/”.

In mdb

mdb $ORACLE_HOME/bin/oracle

main:b

:r

^ debugger should stop here. Then continue

with disassembly commands.

If the disassembly commands still do

not seem to work try “func/i” instead of

“func?i” and “+/i” instead of “+?i” .

ie: Change the “?” in the commands to a “/”

for instance on linux , disassembling function ksmdscan(one of the kernel service memory function):


[appl@rh2 ~]$ script oracle_ksmdscan
Script started, file is oracle_ksmdscan
[appl@rh2 ~]$ source 102.sh
[appl@rh2 ~]$ gdb /d01/10204/bin/ora
oracg     oracle    oracleO   oradism   oradismO  oraenv    orajaxb   orapipe   orapki    orapwd    orapwdO   oratclsh  oraxml    oraxsl
[appl@rh2 ~]$ gdb /d01/10204/bin/oracle
GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type “show copying”
and “show warranty” for details.
This GDB was configured as “x86_64-redhat-linux-gnu”.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>…
Reading symbols from /d01/10204/bin/oracle…(no debugging symbols found)…done.
(gdb) set pagination off
(gdb) disassemble ksmdscan
Dump of assembler code for function ksmdscan:
0×0000000001254940 <ksmdscan+0>:        push   %rbp
0×0000000001254941 <ksmdscan+1>:        mov    %rsp,%rbp
0×0000000001254944 <ksmdscan+4>:        sub    $0×20,%rsp
0×0000000001254948 <ksmdscan+8>:        mov    %r12,-0×10(%rbp)
0x000000000125494c <ksmdscan+12>:       mov    0×8(%rdi),%r11
0×0000000001254950 <ksmdscan+16>:       mov    0×10(%rsi),%rdi
0×0000000001254954 <ksmdscan+20>:       mov    $0×1,%r12d
0x000000000125495a <ksmdscan+26>:       xor    %eax,%eax
0x000000000125495c <ksmdscan+28>:       mov    $0×1,%r8d
0×0000000001254962 <ksmdscan+34>:       cmp    $0×0,%rdi
0×0000000001254966 <ksmdscan+38>:       mov    $0×0,%r9d
0x000000000125496c <ksmdscan+44>:       cmovne %r8d,%r9d
0×0000000001254970 <ksmdscan+48>:       mov    %rbx,-0×8(%rbp)
0×0000000001254974 <ksmdscan+52>:       test   %r9d,%r9d
0×0000000001254977 <ksmdscan+55>:       je     0x1254bf5 <ksmdscan+693>
0x000000000125497d <ksmdscan+61>:       mov    (%rdi),%r10
0×0000000001254980 <ksmdscan+64>:       mov    0×8(%r10),%rbx
0×0000000001254984 <ksmdscan+68>:       mov    0×10(%rdi),%edi
0×0000000001254987 <ksmdscan+71>:       mov    0×34(%r11),%ecx
0x000000000125498b <ksmdscan+75>:       lea    0xc8(%r11),%r9
0×0000000001254992 <ksmdscan+82>:       mov    $0×1,%r8d
0×0000000001254998 <ksmdscan+88>:       cmp    %r9,%rbx
0x000000000125499b <ksmdscan+91>:       mov    $0×0,%r9d
0x00000000012549a1 <ksmdscan+97>:       cmove  %r8d,%r9d
0x00000000012549a5 <ksmdscan+101>:      mov    0×38(%r11),%r8d
0x00000000012549a9 <ksmdscan+105>:      and    %edi,%r8d
0x00000000012549ac <ksmdscan+108>:      shr    %cl,%edi
0x00000000012549ae <ksmdscan+110>:      test   %r9d,%r9d
0x00000000012549b1 <ksmdscan+113>:      je     0x1254be9 <ksmdscan+681>
0x00000000012549b7 <ksmdscan+119>:      test   %rbx,%rbx
0x00000000012549ba <ksmdscan+122>:      je     0x1254a1c <ksmdscan+220>
0x00000000012549bc <ksmdscan+124>:      mov    %r13,-0×18(%rbp)
0x00000000012549c0 <ksmdscan+128>:      and    $0×1,%edx
0x00000000012549c3 <ksmdscan+131>:      test   %r10,%r10
0x00000000012549c6 <ksmdscan+134>:      je     0x1254c04 <ksmdscan+708>
0x00000000012549cc <ksmdscan+140>:      test   %r12d,%r12d
0x00000000012549cf <ksmdscan+143>:      jne    0x1254bd1 <ksmdscan+657>
0x00000000012549d5 <ksmdscan+149>:      mov    %r8d,%r13d
0x00000000012549d8 <ksmdscan+152>:      shr    $0×3,%r13d
0x00000000012549dc <ksmdscan+156>:      movzbl 0×10(%r13,%r10,1),%r12d
0x00000000012549e2 <ksmdscan+162>:      mov    %r8d,%ecx
0x00000000012549e5 <ksmdscan+165>:      and    $0×7,%ecx
0x00000000012549e8 <ksmdscan+168>:      mov    $0×1,%r13d
0x00000000012549ee <ksmdscan+174>:      shl    %cl,%r13d
0x00000000012549f1 <ksmdscan+177>:      movzbl %r13b,%r13d
0x00000000012549f5 <ksmdscan+181>:      test   %r12d,%r13d
0x00000000012549f8 <ksmdscan+184>:      je     0x1254be0 <ksmdscan+672>
0x00000000012549fe <ksmdscan+190>:      test   %edx,%edx
0x0000000001254a00 <ksmdscan+192>:      jne    0x1254bc8 <ksmdscan+648>
0x0000000001254a06 <ksmdscan+198>:      xor    %r12d,%r12d
0x0000000001254a09 <ksmdscan+201>:      add    $0×1,%r8d
0x0000000001254a0d <ksmdscan+205>:      cmp    0×30(%r11),%r8d
0x0000000001254a11 <ksmdscan+209>:      jae    0x1254a78 <ksmdscan+312>
0x0000000001254a13 <ksmdscan+211>:      test   %rbx,%rbx
0x0000000001254a16 <ksmdscan+214>:      jne    0x12549c3 <ksmdscan+131>
0x0000000001254a18 <ksmdscan+216>:      mov    -0×18(%rbp),%r13
0x0000000001254a1c <ksmdscan+220>:      test   %rbx,%rbx
0x0000000001254a1f <ksmdscan+223>:      je     0x1254a74 <ksmdscan+308>
0x0000000001254a21 <ksmdscan+225>:      test   %r10,%r10
0x0000000001254a24 <ksmdscan+228>:      je     0x1254a74 <ksmdscan+308>
0x0000000001254a26 <ksmdscan+230>:      mov    0×4(%r10),%eax
0x0000000001254a2a <ksmdscan+234>:      mov    0×58(%r11),%rdx
0x0000000001254a2e <ksmdscan+238>:      add    $0×7,%eax
0x0000000001254a31 <ksmdscan+241>:      shr    $0×3,%eax
0x0000000001254a34 <ksmdscan+244>:      lea    0×17(%r10,%rax,1),%rcx
0x0000000001254a39 <ksmdscan+249>:      and    $0xfffffffffffffff8,%rcx
0x0000000001254a3d <ksmdscan+253>:      mov    %r8d,%r8d
0x0000000001254a40 <ksmdscan+256>:      add    $0x1f,%rdx
0x0000000001254a44 <ksmdscan+260>:      and    $0xfffffffffffffff8,%rdx
0x0000000001254a48 <ksmdscan+264>:      imul   %r8,%rdx
0x0000000001254a4c <ksmdscan+268>:      add    %rdx,%rcx
0x0000000001254a4f <ksmdscan+271>:      mov    -0×8(%rbp),%rbx
0x0000000001254a53 <ksmdscan+275>:      mov    -0×10(%rbp),%r12
0x0000000001254a57 <ksmdscan+279>:      movl   $0×0,(%rsi)
0x0000000001254a5d <ksmdscan+285>:      mov    %rcx,0×10(%rsi)
0x0000000001254a61 <ksmdscan+289>:      lea    0×18(%rcx),%rax
0x0000000001254a65 <ksmdscan+293>:      xor    %edx,%edx
0x0000000001254a67 <ksmdscan+295>:      cmp    $0×0,%rcx
0x0000000001254a6b <ksmdscan+299>:      cmove  %rdx,%rax
0x0000000001254a6f <ksmdscan+303>:      mov    %rbp,%rsp
0x0000000001254a72 <ksmdscan+306>:      pop    %rbp
0x0000000001254a73 <ksmdscan+307>:      retq
0x0000000001254a74 <ksmdscan+308>:      xor    %ecx,%ecx
0x0000000001254a76 <ksmdscan+310>:      jmp    0x1254a4f <ksmdscan+271>
0x0000000001254a78 <ksmdscan+312>:      xor    %r8d,%r8d
0x0000000001254a7b <ksmdscan+315>:      add    $0×1,%edi
0x0000000001254a7e <ksmdscan+318>:      test   %r9d,%r9d
0x0000000001254a81 <ksmdscan+321>:      je     0x1254abb <ksmdscan+379>
0x0000000001254a83 <ksmdscan+323>:      mov    0xd0(%r11),%r13d
0x0000000001254a8a <ksmdscan+330>:      cmp    %r13d,%edi
0x0000000001254a8d <ksmdscan+333>:      jae    0x1254bb0 <ksmdscan+624>
0x0000000001254a93 <ksmdscan+339>:      cmp    0xcc(%r11),%edi
0x0000000001254a9a <ksmdscan+346>:      jae    0x1254ba8 <ksmdscan+616>
0x0000000001254aa0 <ksmdscan+352>:      add    $0×7,%r13d
0x0000000001254aa4 <ksmdscan+356>:      shr    $0×3,%r13d
0x0000000001254aa8 <ksmdscan+360>:      lea    0xe7(%r11,%r13,1),%r10
0x0000000001254ab0 <ksmdscan+368>:      and    $0xfffffffffffffff8,%r10
0x0000000001254ab4 <ksmdscan+372>:      mov    %edi,%r13d
0x0000000001254ab7 <ksmdscan+375>:      mov    (%r10,%r13,8),%r10
0x0000000001254abb <ksmdscan+379>:      test   %rbx,%rbx
0x0000000001254abe <ksmdscan+382>:      je     0x1254a13 <ksmdscan+211>
0x0000000001254ac4 <ksmdscan+388>:      test   %r9d,%r9d
0x0000000001254ac7 <ksmdscan+391>:      jne    0x1254a13 <ksmdscan+211>
0x0000000001254acd <ksmdscan+397>:      test   %rbx,%rbx
0x0000000001254ad0 <ksmdscan+400>:      je     0x1254af2 <ksmdscan+434>
0x0000000001254ad2 <ksmdscan+402>:      mov    0×40(%r11),%r13d
0x0000000001254ad6 <ksmdscan+406>:      mov    %r14,-0×20(%rbp)
0x0000000001254ada <ksmdscan+410>:      mov    %r13d,%ecx
0x0000000001254add <ksmdscan+413>:      add    %eax,%ecx
0x0000000001254adf <ksmdscan+415>:      mov    %edi,%r14d
0x0000000001254ae2 <ksmdscan+418>:      shr    %cl,%r14d
0x0000000001254ae5 <ksmdscan+421>:      test   %r14d,%r14d
0x0000000001254ae8 <ksmdscan+424>:      jne    0x1254b88 <ksmdscan+584>
0x0000000001254aee <ksmdscan+430>:      mov    -0×20(%rbp),%r14
0x0000000001254af2 <ksmdscan+434>:      test   %rbx,%rbx
0x0000000001254af5 <ksmdscan+437>:      je     0x1254b39 <ksmdscan+505>
0x0000000001254af7 <ksmdscan+439>:      mov    0xc(%rbx),%r13d
0x0000000001254afb <ksmdscan+443>:      cmp    $0×1,%r13d
0x0000000001254aff <ksmdscan+447>:      jbe    0x1254b39 <ksmdscan+505>
0x0000000001254b01 <ksmdscan+449>:      mov    %eax,%ecx
0x0000000001254b03 <ksmdscan+451>:      mov    %edi,%r13d
0x0000000001254b06 <ksmdscan+454>:      shr    %cl,%r13d
0x0000000001254b09 <ksmdscan+457>:      and    0×44(%r11),%r13d
0x0000000001254b0d <ksmdscan+461>:      cmp    0×4(%rbx),%r13d
0x0000000001254b11 <ksmdscan+465>:      jae    0x1254ba0 <ksmdscan+608>
0x0000000001254b17 <ksmdscan+471>:      sub    0×40(%r11),%eax
0x0000000001254b1b <ksmdscan+475>:      mov    0×8(%rbx),%ecx
0x0000000001254b1e <ksmdscan+478>:      mov    %r13d,%r13d
0x0000000001254b21 <ksmdscan+481>:      add    $0×7,%ecx
0x0000000001254b24 <ksmdscan+484>:      shr    $0×3,%ecx
0x0000000001254b27 <ksmdscan+487>:      lea    0x1f(%rbx,%rcx,1),%rbx
0x0000000001254b2c <ksmdscan+492>:      and    $0xfffffffffffffff8,%rbx
0x0000000001254b30 <ksmdscan+496>:      mov    (%rbx,%r13,8),%rbx
0x0000000001254b34 <ksmdscan+500>:      test   %rbx,%rbx
0x0000000001254b37 <ksmdscan+503>:      jne    0x1254af7 <ksmdscan+439>
0x0000000001254b39 <ksmdscan+505>:      test   %rbx,%rbx
0x0000000001254b3c <ksmdscan+508>:      je     0x1254a13 <ksmdscan+211>
0x0000000001254b42 <ksmdscan+514>:      mov    0×44(%r11),%r13d
0x0000000001254b46 <ksmdscan+518>:      mov    %edi,%r10d
0x0000000001254b49 <ksmdscan+521>:      and    %r13d,%r10d
0x0000000001254b4c <ksmdscan+524>:      cmp    0×4(%rbx),%r10d
0x0000000001254b50 <ksmdscan+528>:      jb     0x1254b60 <ksmdscan+544>
0x0000000001254b52 <ksmdscan+530>:      xor    %r10d,%r10d
0x0000000001254b55 <ksmdscan+533>:      jmpq   0x1254a13 <ksmdscan+211>
0x0000000001254b5a <ksmdscan+538>:      xchg   %ax,%ax
0x0000000001254b5d <ksmdscan+541>:      xchg   %ax,%ax
0x0000000001254b60 <ksmdscan+544>:      mov    %edi,%r10d
0x0000000001254b63 <ksmdscan+547>:      mov    %r13d,%r13d
0x0000000001254b66 <ksmdscan+550>:      and    %r13,%r10
0x0000000001254b69 <ksmdscan+553>:      mov    0×8(%rbx),%r13d
0x0000000001254b6d <ksmdscan+557>:      add    $0×7,%r13d
0x0000000001254b71 <ksmdscan+561>:      shr    $0×3,%r13d
0x0000000001254b75 <ksmdscan+565>:      lea    0x1f(%rbx,%r13,1),%r13
0x0000000001254b7a <ksmdscan+570>:      and    $0xfffffffffffffff8,%r13
0x0000000001254b7e <ksmdscan+574>:      mov    0×0(%r13,%r10,8),%r10
0x0000000001254b83 <ksmdscan+579>:      jmpq   0x1254a13 <ksmdscan+211>
0x0000000001254b88 <ksmdscan+584>:      mov    0×10(%rbx),%rbx
0x0000000001254b8c <ksmdscan+588>:      mov    %ecx,%eax
0x0000000001254b8e <ksmdscan+590>:      test   %rbx,%rbx
0x0000000001254b91 <ksmdscan+593>:      jne    0x1254ada <ksmdscan+410>
0x0000000001254b97 <ksmdscan+599>:      mov    -0×20(%rbp),%r14
0x0000000001254b9b <ksmdscan+603>:      jmpq   0x1254af2 <ksmdscan+434>
0x0000000001254ba0 <ksmdscan+608>:      xor    %ebx,%ebx
0x0000000001254ba2 <ksmdscan+610>:      jmp    0x1254b39 <ksmdscan+505>
0x0000000001254ba4 <ksmdscan+612>:      xchg   %ax,%ax
0x0000000001254ba8 <ksmdscan+616>:      xor    %r10d,%r10d
0x0000000001254bab <ksmdscan+619>:      jmpq   0x1254abb <ksmdscan+379>
0x0000000001254bb0 <ksmdscan+624>:      mov    0xc0(%r11),%rbx
0x0000000001254bb7 <ksmdscan+631>:      mov    0×40(%r11),%eax
0x0000000001254bbb <ksmdscan+635>:      xor    %edi,%edi
0x0000000001254bbd <ksmdscan+637>:      xor    %r9d,%r9d
0x0000000001254bc0 <ksmdscan+640>:      jmpq   0x1254abb <ksmdscan+379>
0x0000000001254bc5 <ksmdscan+645>:      xchg   %ax,%ax
0x0000000001254bc8 <ksmdscan+648>:      mov    -0×18(%rbp),%r13
0x0000000001254bcc <ksmdscan+652>:      jmpq   0x1254a1c <ksmdscan+220>
0x0000000001254bd1 <ksmdscan+657>:      cmpl   $0×0,(%rsi)
0x0000000001254bd4 <ksmdscan+660>:      je     0x1254a06 <ksmdscan+198>
0x0000000001254bda <ksmdscan+666>:      jmpq   0x12549d5 <ksmdscan+149>
0x0000000001254bdf <ksmdscan+671>:      nop
0x0000000001254be0 <ksmdscan+672>:      mov    -0×18(%rbp),%r13
0x0000000001254be4 <ksmdscan+676>:      jmpq   0x1254a1c <ksmdscan+220>
0x0000000001254be9 <ksmdscan+681>:      sub    0xd0(%r11),%edi
0x0000000001254bf0 <ksmdscan+688>:      jmpq   0x12549b7 <ksmdscan+119>
0x0000000001254bf5 <ksmdscan+693>:      mov    -0×8(%rbp),%rbx
0x0000000001254bf9 <ksmdscan+697>:      mov    -0×10(%rbp),%r12
0x0000000001254bfd <ksmdscan+701>:      xor    %eax,%eax
0x0000000001254bff <ksmdscan+703>:      mov    %rbp,%rsp
0x0000000001254c02 <ksmdscan+706>:      pop    %rbp
0x0000000001254c03 <ksmdscan+707>:      retq
0x0000000001254c04 <ksmdscan+708>:      mov    -0×18(%rbp),%r13
0x0000000001254c08 <ksmdscan+712>:      jmpq   0x1254a1c <ksmdscan+220>
0x0000000001254c0d <ksmdscan+717>:      xchg   %ax,%ax
End of assembler dump.

© 2010, www.oracledatabase12g.com. 版权所有.文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.

相关文章 | Related posts:

  1. Oracle Database on Unix AIX,HP-UX,Linux,Mac OS X,Solaris,Tru64 Unix Operating Systems Installation and Configuration Requirements Quick Reference (8.0.5 to 11.2)
  2. Grid Control 11g WLS installation On 32bit Microsoft Windows Platforms
  3. autotrace在绑定变量情况下不准确的问题
  4. How to Get Function Names from the Call Stack that has Hexadecimal Numbers
  5. Oracle Supplemental 补全日志介绍
  6. The correct NLS_LANG setting in Unix Environments
  7. ora-7445 [kghalp+0500] [SIGSEGV]错误
  8. Collecting Diagnostic Data for OCFS2 Issues
  9. How to Relink Oracle Database Software on UNIX
  10. 部分行索引使用介绍

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>