This is the mail archive of the gdb-patches@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] |
Hi, I found that these patches cannot pass the test of dprintf. And it have something wrong. So I make a new version for it. And the last issue that I told about "May only run agent-printf on the target". Because patch for it depend on the patches in http://sourceware.org/ml/gdb-patches/2013-06/msg00139.html. So I will post it in another thread. Thanks, Hui 2013-06-17 Hui Zhu <hui@codesourcery.com> PR gdb/15180 * breakpoint.c (build_target_condition_list, build_target_command_list): Removed. (build_target_condition_list_first, build_target_command_list_first, build_target_command_list_and_condition_list): New functions. (insert_bp_location): Call build_target_command_list_and_condition_list. * remote.c (remote_add_target_side_condition): Handle NULL. (remote_add_target_side_commands): Ditto. 2013-06-17 Hui Zhu <hui@codesourcery.com> PR gdb/15180 * linux-low.c (linux_wait_1): Update arguments of function gdb_condition_true_at_breakpoint. Remove function run_breakpoint_commands. (need_step_over_p): Update arguments of function gdb_condition_true_at_breakpoint. * mem-break.c (add_condition_to_breakpoint): Add new condition to tail. (gdb_condition_true_at_breakpoint): Execute commands. (add_commands_to_breakpoint): Add new commands to tail. * mem-break.h (gdb_condition_true_at_breakpoint): Update arguments. On Sun, Apr 28, 2013 at 4:33 PM, Hui Zhu <teawater@gmail.com> wrote: > Hi, > > As the Yao said in the first version patch, the core issue of this bug > is the command is not well grouped or associated with condition in > target side. > And after I check the code of GDB, I found that in gdb part, when it > build target commands list (build_target_command_list) and condition > list (build_target_condition_list) to bl->target_info, they do not > good grouped commands and condition. Also they have another issue for > example, not handle disable breakpoints very well. > > > So I merge the two functions together to function > build_target_command_list_and_condition_list. > It will do check for all the commands and conditions in a address. > After that, push commands and conditions bytecodes to target_info. It > will push NULL to it if need. > With this NULL, because commands and conditions have the same number, > then it can be grouped. > In the end of this function, it will pust a NULL conditions, it can > handle the BL has commands on target but always need let GDB handle > the conditions. > > After that, I updated remote_add_target_side_commands and > remote_add_target_side_condition. Then if it got NULL condition or > commands. It will send bytecodes with 0 size to gdbserver. > > > In gdbserver part, I update it add commands and condition in right > order like how it received because maybe we have a 0 size conditions > in the end without commands. > Tom suggest we handle commands of dprintf together with condition > check to handle bug 15075 in > http://sourceware.org/ml/gdb-patches/2013-02/msg00557.html > I think this is a good idea to handle commands with conditions, so I > post patch http://sourceware.org/ml/gdb-patches/2013-04/msg00711.html > for 15075. > And I do same thing in gdbserver. I update function > gdb_condition_true_at_breakpoint let it can execute commands too if > need. > > > In the end, after these patches, gdb still have issue if a breakpoints > with conditions and dprintf with condions: > (gdb) target remote :1234 > Remote debugging using :1234 > Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging > symbols found)...done. > Loaded symbols for /lib64/ld-linux-x86-64.so.2 > 0x00007ffff7ddb6b0 in ?? () from /lib64/ld-linux-x86-64.so.2 > (gdb) set dprintf-style > agent call gdb > (gdb) set dprintf-style agent > (gdb) source 2 > Dprintf 1 at 0x4005a7: file 2.c, line 7. > Breakpoint 2 at 0x4005a7: file 2.c, line 7. > (gdb) info b > Num Type Disp Enb Address What > 1 dprintf keep y 0x00000000004005a7 in main at 2.c:7 > stop only if i>3 (host evals) > agent-printf "%d\n",i > 2 breakpoint keep y 0x00000000004005a7 in main at 2.c:7 > stop only if i>4 (host evals) > (gdb) c > Continuing. > > Breakpoint 1, main () at 2.c:7 > 7 printf("friend\n"); > May only run agent-printf on the target > > But I think this issue is about howto handle dprintf commands in the > gdb part, and I have another patch about it is waiting review. So I > will post patch for it later. > > Thanks, > Hui > > 2013-04-27 Hui Zhu <hui@codesourcery.com> > > PR gdb/15180 > * breakpoint.c (build_target_condition_list, > build_target_command_list): Removed. > (build_target_condition_list_first, build_target_command_list_first, > build_target_command_list_and_condition_list): New. > (insert_bp_location): Call > build_target_command_list_and_condition_list. > * remote.c (remote_add_target_side_condition): Handle NULL. > (remote_add_target_side_commands): Ditto. > > 2013-04-27 Hui Zhu <hui@codesourcery.com> > > PR gdb/15180 > * linux-low.c (linux_wait_1): Update arguments of function > gdb_condition_true_at_breakpoint. > (need_step_over_p): Ditto. > * mem-break.c (add_condition_to_breakpoint): Add new condition > to tail. > (gdb_condition_true_at_breakpoint): Execute commands. > (add_commands_to_breakpoint): Add new commands to tail. > * mem-break.h (gdb_condition_true_at_breakpoint): Update arguments.
Attachment:
dprintf-remote-cond.txt
Description: Text document
Attachment:
dprintf-remote-cond-server.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |