Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: s88 <dave.tw@gmail.com>
To: s88 <dave.tw@gmail.com>, gdb@sourceware.org
Subject: Re: gdb breakpoint on x86
Date: Mon, 16 Oct 2006 01:15:00 -0000	[thread overview]
Message-ID: <c9d32f760610151815t7b1969c5ve50ed368af290773@mail.gmail.com> (raw)
In-Reply-To: <20061016003930.GA525@nevyn.them.org>

On 10/16/06, Daniel Jacobowitz <drow@false.org> wrote:
> On Mon, Oct 16, 2006 at 08:12:29AM +0800, s88 wrote:
> > Hi all:
> > I'm trying to build  up a simple breakpoint insertor by myself. I also
> > tracing the gdb source code and reference it!!!
> > But I feel confused about the int 3(0xcc), the function
> > "i386_breakpoint_from_pc" has 2 parameters, one of the parameter is a
> > program counter. I'm not sure the meaning of this program counter.
> > Does this program counter perform an ISR? Once the 0xcc trig, the
> > current program counter will replace by this one?
>
> No, it's the address at which the breakpoint will be placed.  On i386
> that doesn't matter, but on some other platforms it can affect which
> instruction is used as a breakpoint.
>
> > By the way, the following code can compile without any error. But the
> > sizeof which in the "i386_breakpoint_from_pc"  derives segmentation
> > fault.
>
> You need to read up on memory protection.  You can't modify a running
> program directly this way on most platforms.
>
Thank gor your reply...

I have a new question, how to remove the memory protection? I'm trying
to find out this part in gdb, but I do not find anything!!
let's see the default_memory_insert_breakpoint (CORE_ADDR addr,
bfd_byte *contents_cache) in the mem-break.c
first, the program "determine appropriate breakpoint contents and size
for this address".
I don't know, the sizeof the int3 is 1 byte, right? why need to detect
the "appropriate" breakpoint size?

after determining the bp size, the program begin to save the target
memory which will insert the 0xcc, then write the 0xcc into the
indecate memory location.

so, break up the memory protection is nessesary during the read/write
memory part in the "default_memory_insert_breakpoint", right?

     36 /* Insert a breakpoint on targets that don't have any better breakpoint
     37    support.  We read the contents of the target location and stash it,
     38    then overwrite it with a breakpoint instruction.  ADDR is the target
     39    location in the target machine.  CONTENTS_CACHE is a pointer to
     40    memory allocated for saving the target contents.  It is guaranteed
     41    by the caller to be long enough to save BREAKPOINT_LEN bytes (this
     42    is accomplished via BREAKPOINT_MAX).  */
     43
     44 int
     45 default_memory_insert_breakpoint (CORE_ADDR addr, bfd_byte
*contents_cache)
     46 {
     47   int val;
     48   const unsigned char *bp;
     49   int bplen;
     50
     51   /* Determine appropriate breakpoint contents and size for
this address.  */
     52   bp = BREAKPOINT_FROM_PC (&addr, &bplen);
     53   if (bp == NULL)
     54     error (_("Software breakpoints not implemented for this target."));
     55
     56   /* Save the memory contents.  */
     57   val = target_read_memory (addr, contents_cache, bplen);
     58
     59   /* Write the breakpoint.  */
     60   if (val == 0)
     61     val = target_write_memory (addr, bp, bplen);
     62
     63   return val;
     64 }



thanks.

> --
> Daniel Jacobowitz
> CodeSourcery
>


-- 
System  on Chip Design  Lab.
Dept. of Computer Science and Information Engineering,
National Chung Cheng University
E-mail : s88.tw@acm.org


  reply	other threads:[~2006-10-16  1:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-16  0:12 s88
2006-10-16  0:39 ` Daniel Jacobowitz
2006-10-16  1:15   ` s88 [this message]
2006-10-16  8:51     ` Frederic RISS
2006-10-16 14:42     ` Jean-Marc Saffroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c9d32f760610151815t7b1969c5ve50ed368af290773@mail.gmail.com \
    --to=dave.tw@gmail.com \
    --cc=gdb@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox