title: Cannot insert breakpoints. Addresses with low values
body: <p>I'm trying to debug this simple C program:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  int main(int argc, char *argv[]) {
      printf("Hello\n");
  }
  </code></pre>
  
  <p>But when I disassemble the main function I get this:</p>
  
  <pre><code>(gdb) disas main
  Dump of assembler code for function main:
      0x000000000000063a &lt;+0&gt;:    push   rbp
      0x000000000000063b &lt;+1&gt;:    mov    rbp,rsp
      0x000000000000063e &lt;+4&gt;:    sub    rsp,0x10
      0x0000000000000642 &lt;+8&gt;:    mov    DWORD PTR [rbp-0x4],edi
      0x0000000000000645 &lt;+11&gt;:   mov    QWORD PTR [rbp-0x10],rsi
      0x0000000000000649 &lt;+15&gt;:   lea    rdi,[rip+0x94]        # 0x6e4
      0x0000000000000650 &lt;+22&gt;:   call   0x510 &lt;puts@plt&gt;
      0x0000000000000655 &lt;+27&gt;:   mov    eax,0x0
      0x000000000000065a &lt;+32&gt;:   leave  
      0x000000000000065b &lt;+33&gt;:   ret    
  End of assembler dump.
  </code></pre>
  
  <p>And this is already pretty strange because addresses starts with a prefix of 4... for 32 bit executables and 8... for 64 bit executables I think.</p>
  
  <p>But going on I then put a breakpoint:</p>
  
  <pre><code>(gdb) b *0x0000000000000650
  Breakpoint 1 at 0x650
  </code></pre>
  
  <p>I run it and I get this error message:</p>
  
  <pre><code>Warning:
  Cannot insert breakpoint 1.
  Cannot access memory at address 0x650
  </code></pre>