gdb breakpoint on x86

Jean-Marc Saffroy saffroy@gmail.com
Mon Oct 16 14:42:00 GMT 2006


On Mon, 16 Oct 2006, s88 wrote:

> 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!!

Use mprotect to change your own mappings:

         char *p = target;

         p -= (unsigned long)p % PAGE_SIZE;
         if(mprotect(p, PAGE_SIZE, PROT_READ|PROT_WRITE|PROT_EXEC)) {
                 perror("mprotect");
                 exit(1);
         }


> 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?

This size is architecture-specific, people use gdb on other CPU 
architectures as well. Look at i386_breakpoint_from_pc or 
ia64_breakpoint_from_pc for wildly different sizes (1 byte vs. 8 bytes).


-- 
saffroy@gmail.com



More information about the Gdb mailing list