Re: Using Unix debuggers to attach to Oracle processes

You might not have such symbol in the oracle binary where you're trying to set 
the breakpoint. Sometimes compilers may change the external function names a 
bit, by adding a prefix or suffix to different versions of a function.

Try the following:

nm $ORACLE_HOME/bin/oracle | grep -i qmxtgr 

and see whether you see any function which reminds the one you're looking for.

I'm not familiar with adb, but a good mdb tutorial can be found at 
http://www.solarisinternals.com/si/reading/chpt_mdb_os.pdf
It's a preview chapter from Solaris 10 internals book due to be out in June, so 
all cool features might not be available on earlier versions, but the basic 
stuff should be the same.

Tanel.
  ----- Original Message ----- 
  From: Schultz, Charles 
  To: Stefan Knecht 
  Cc: oracle-l 
  Sent: Thursday, May 04, 2006 9:52 PM
  Subject: RE: Using Unix debuggers to attach to Oracle processes


  Wow, that is very good. Thanks Stefan and Tanel!

  Now I have to not only read that wealth of information, but understand 
it..... =) Also, we do not have access to gdb (used in Tanel's example), but I 
am hoping to use his examples and hack something together for our site.



------------------------------------------------------------------------------
  From: Stefan Knecht [mailto:knecht.stefan@xxxxxxxxx] 
  Sent: Thursday, May 04, 2006 8:43 AM
  To: Schultz, Charles
  Cc: oracle-l
  Subject: Re: Using Unix debuggers to attach to Oracle processes


  Tanel Põder has an interesting presentation on this:

  http://integrid.info/hotsos05/Advanced%20Research%20Techniques.pdf

  HTH

  Stefan


  On 5/4/06, Schultz, Charles <sac@xxxxxxxxxxxxx> wrote: 
    Anyone familiar with using adb or mdb to attach to Unix (Solaris)
    processes? I am working with Oracle Support, but the guy behind the
    curtain (the developer) is in England, and it is hard to communicate
    quickly since our shifts do not overlap for long. 

    This is what I have so far - I bomb on #5 with an "unknown symbol":
    1. adb -P'> ' $ORACLE_HOME/bin/oracle
    2. Wait for the "> " prompt
    3. Determine the OS pid of the shadow ("oracle$ORACLE_SID") process. The 
    steps below assume that the pid is 123456.
    4. Attach to the process by typing "0t123456:A" at the "> " prompt
    5. Set a breakpoint in qmxtgrGetBindVal() by typing "qmxtgrGetBindVal:b" 
    at the "> " prompt.
    6. Allow the process to continue execution by typing ":c" at the "> "
    prompt.
    7. Repeat steps 1-6 for all of the shared_server processes(p00x)and QC
    process executing the "adb" command under different windows.


    charles schultz
    oracle dba
    aits - adsd
    university of illinois


    --
    http://www.freelists.org/webpage/oracle-l




Other related posts: