This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Reset breakpoint after load?


On 01/21/2010 06:18 PM, Dave Korn wrote:
On 19/01/2010 07:36, Jie Zhang wrote:

gdb-comm.exp sets breakpoints on exit and abort before load. The problem
is that GDB tries to skip prologue according to what it reads from
memory, which might contain random data since the executable has not
been loaded into memory. In my case, sometimes skip_prologue might skip
one or two more instructions, which happens to be an exception
instruction and will trap the processor into an exception event loop
after running the executable before hit the breakpoints.

Something is wrong here. Before the inferior is started, gdb should be looking at the prologue bytes from the executable image file, not the inferior memory. Is something going wrong in gdb_comm_file_cmd()?

Originally gdb_comm_load () did as below:

1. set breakpoints at abort and exit

2. target $protocol $targetname

3. load

At 1, gdb reads from executable image file when analyze prologue. At 2, gdb re-set breakpoints according the bytes read from target memory. So after 3 we need to re-set breakpoint again.

I have proposed a patch to dejagnu to change the order to

1. target $protocol $targetname

2. load

3. set breakpoints at abort and exit

which has been accepted and committed. But I think it's still a good idea to add the breakpoint re-set in GDB after load.


Jie



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]