Break at address on darwin

Tristan Gingold gingold@adacore.com
Wed Aug 3 08:09:00 GMT 2011


On Aug 2, 2011, at 11:51 PM, Ben L. Titzer wrote:

> On Tue, Aug 2, 2011 at 1:31 PM, Jonas Maebe <jonas.maebe@elis.ugent.be> wrote:
>> 
>> On 02 Aug 2011, at 21:19, Ben L. Titzer wrote:
>> 
>>> On Tue, Aug 2, 2011 at 12:00 PM, Jeffrey Walton <noloader@gmail.com> wrote:
>>>> Are you certain you are setting a breakpoint on an address (eg, b
>>>> 0x40000000)? Or is it a symbolic name (b main)?
>> 
>> Just to make sure: to put a breakpoint on an address, it's "b *0x40000000" (i.e., with an extra "*"; but you'd notice if you used the wrong syntax, since gdb would complain that it can't find a symbol with that name).
> 
> Yes, I am using the correct syntax and gdb will list the breakpoints I
> have added.
> 
>> 
>>> It's an address. I ænow for sure it's being executed because it's the
>>> first instruction in the binary.
>> 
>> Actually, I've noticed on many platforms that breakpoints on the very first instruction don't work. Did you also try other instructions?
>> 
> 
> Doesn't matter, no breakpoints work.
> 
> I've attached a sample binary and gdb session.

Ben,

you are using the Apple version of gdb.  Please talk with Apple about this issue.

Tristan.

> 
> -------------------
> % gdb /tmp/add01
> GNU gdb 6.3.50-20050815 (Apple version gdb-1515) (Sat Jan 15 08:33:48 UTC 2011)
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "x86_64-apple-darwin"...
> (gdb) break *0x1114
> Breakpoint 1 at 0x1114
> (gdb) run
> Starting program: /private/tmp/add01
> 
> Program exited with code 04.
> (gdb) disass 0x1114 0x1140
> Dump of assembler code from 0x1114 to 0x1140:
> 0x00001114:	mov    (%esp),%ebx
> 0x00001117:	mov    $0x0,%eax
> 0x0000111c:	mov    0x1121(,%ebx,4),%edx
> 0x00001123:	jmp    0x1129
> 0x00001125:	add    %al,(%eax)
> 0x00001127:	add    %al,(%eax)
> 0x00001129:	call   0x1148
> 0x0000112e:	push   %eax
> 0x0000112f:	mov    %esp,%ebx
> 0x00001131:	push   $0x4
> 0x00001133:	push   %ebx
> 0x00001134:	push   $0x1
> 0x00001136:	push   $0x0
> 0x00001138:	mov    $0x4,%eax
> 0x0000113d:	int    $0x80
> 0x0000113f:	push   %eax
> End of assembler dump.
> (gdb) break 01148
> No symbol table is loaded.  Use the "file" command.
> (gdb) break *0x1148
> Breakpoint 2 at 0x1148
> (gdb) run
> Starting program: /private/tmp/add01
> 
> Program exited with code 04.
> (gdb) info breakpoints
> Num Type           Disp Enb Address    What
> 1   breakpoint     keep y   0x00001114
> 2   breakpoint     keep y   0x00001148
> (gdb)
> <add01>



More information about the Gdb mailing list