This is the mail archive of the insight@sources.redhat.com mailing list for the Insight project.


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

Re: Patch: disable breakpoint on menu


Looks good to me.

Tom Tromey wrote:
> 
> This patch adds "Disable Breakpoint" to the breakpoint popup menu.  It
> also adds a special menu for disabled breakpoints (the choices there
> are delete or enable).
> 
> I think this idea came up on the todo list.  Anyway I remember seeing
> it recently, and I've frequently wanted it myself.
> 
> Ok?
> 
> 2000-11-30  Tom Tromey  <tromey@cygnus.com>
> 
>         * srctextwin.ith (enable_disable_at_line): Declare.
>         * srctextwin.itb (SrcTextWin::build_popups): Create popup for
>         disabled breakpoint.  Add "disable" to breakpoint menu.
>         (enable_disable_at_line): New method.
>         (SrcTextWin::do_bp): Don't remove the tag we are adding -- remove
>         the "opposite" tag.
> 
> Tom
> 
> Index: srctextwin.itb
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbtk/library/srctextwin.itb,v
> retrieving revision 1.13
> diff -u -r1.13 srctextwin.itb
> --- srctextwin.itb      2000/11/30 22:49:46     1.13
> +++ srctextwin.itb      2000/12/01 04:22:13
> @@ -171,7 +171,8 @@
>    set popups(tp_browse) $itk_interior.tp_browse_menu
>    set popups(break_rgn) $itk_interior.break_menu
>    set popups(source) $itk_interior.src_menu
> -
> +  set popups(disabled_bp) $itk_interior.disabled_bp_menu
> +
>    # This is a scratch popup menu we use when we are not over a bp...
>    if {![winfo exists $popups(source)]} {
>      menu $popups(source) -tearoff 0
> @@ -220,6 +221,10 @@
>        addPopup bp "Continue to Here" "$this continue_to_here" {} 0 0
>        addPopup bp "Jump to Here" "$this jump_to_here" {} 0 0
>        $popups(bp) add separator
> +
> +      addPopup bp "Disable Breakpoint" "$this enable_disable_at_line disable" \
> +       $bp_fg
> +      $popups(bp) add separator
>      }
> 
>      addPopup bp "Delete Breakpoint" "$this remove_bp_at_line"
> @@ -276,7 +281,7 @@
>         green 0 0
>        $popups(bp_and_tp) add separator
>      }
> -
> +
>      addPopup bp_and_tp "Delete Breakpoint" "$this remove_bp_at_line" $bp_fg
>      if {$Tracing} {
>        addPopup bp_and_tp "Modify Tracepoint" "$this set_tp_at_line" $tp_fg
> @@ -284,7 +289,17 @@
>         "$this remove_tp_at_line" $tp_fg
>      }
>    }
> -
> +
> +  if {![winfo exists $popups(disabled_bp)]} {
> +    menu $popups(disabled_bp) -tearoff 0
> +
> +    addPopup disabled_bp "Enable Breakpoint" \
> +      "$this enable_disable_at_line enable" $bp_fg
> +
> +    $popups(disabled_bp) add separator
> +    addPopup disabled_bp "Delete Breakpoint" "$this remove_bp_at_line"
> +  }
> +
>    if {![winfo exists $popups(tp_browse)]} {
> 
>      # this popup is on a tracepoint when browsing.
> @@ -293,7 +308,6 @@
>      addPopup tp_browse "Next hit Here" "$this next_hit_at_line" \
>        green
>    }
> -
>  }
> 
>  # ------------------------------------------------------------------
> @@ -527,7 +541,13 @@
>      $win tag bind break_rgn_tag <Button-3> \
>        "$this do_tag_popup break_rgn %X %Y %y; break"
>      foreach type $bp_types {
> -      $win tag bind ${type}_tag <Button-3> "$this do_tag_popup bp %X %Y %y; break"
> +      if {$type == "disabled_bp"} then {
> +       set tag disabled_bp
> +      } else {
> +       set tag bp
> +      }
> +      $win tag bind ${type}_tag <Button-3> \
> +       "$this do_tag_popup $tag %X %Y %y; break"
>      }
>      $win tag bind tp_tag <Button-3> "$this do_tag_popup tp %X %Y %y; break"
>      $win tag bind bp_and_tp_tag <Button-3> "$this do_tag_popup bp_and_tp %X %Y %y; break"
> @@ -692,6 +712,7 @@
>    }
> 
>  }
> +
>  # ------------------------------------------------------------------
>  #  METHOD:  handle_set_hook - Handle changes in the gdb variables
>  #           changed through the "set" gdb command.
> @@ -1323,12 +1360,11 @@
>                         $linenum.0 "$linenum.0 lineend"] 1]
>      $win tag remove break_rgn_tag $linenum.0 "$linenum.0 lineend"
>      $win delete $linenum.0
> -
> +
>      # Strip the "_tag" off the end of the tag to get the image name.
>      $win image create $linenum.0 -image $break_images($img_name)
>      $win tag add $tag $linenum.0 $stop
>    } else {
> -
>      set other_tag [lindex $tag_list \
>                      [lsearch -glob $tag_list {*[bt]p_tag}]]
>      if {$other_tag == ""} {
> @@ -1488,22 +1524,26 @@
>        set type thread
>      }
>    }
> -
> +
>    switch $type {
>      donttouch {
>        set tag_type bp_tag
> +      set remove_type disabled_bp_tag
>      }
>      delete {
>        set tag_type temp_bp_tag
>      }
>      disabled_bp {
>        set tag_type disabled_bp_tag
> +      set remove_type bp_tag
>      }
>      tracepoint {
>        set tag_type tp_tag
> +      set remove_type disabled_tp_tag
>      }
>      disabled_tracepoint {
>        set tag_type disabled_tp_tag
> +      set remove_type tp_tag
>      }
>      thread {
>        set tag_type thread_bp_tag
> @@ -1514,12 +1554,12 @@
>        set tag_type bp_tag
>      }
>    }
> -
> +
>    if {[string compare $action "delete"] == 0} {
>      removeBreakTag $win $linenum $tag_type
>    } else {
> -    if {[string compare $action "modify"] == 0} {
> -      removeBreakTag $win $linenum $tag_type
> +    if {[string compare $action "modify"] == 0 && $remove_type != ""} {
> +      removeBreakTag $win $linenum $remove_type
>      }
>      insertBreakTag $win $linenum $tag_type
>    }
> @@ -1789,6 +1829,52 @@
>  }
> 
>  # ------------------------------------------------------------------
> +#  METHOD:  enable_disable_at_line - Enable or disable breakpoint
> +# ------------------------------------------------------------------
> +body SrcTextWin::enable_disable_at_line {action} {
> +  if {$Running} {
> +    return
> +  }
> +
> +  # FIXME: should this work on $bwin as well?  In that case we'd need
> +  # a `win' argument...
> +
> +  set y $popups(saved_y)
> +
> +  $twin tag remove _show_variable 1.0 end
> +  set line [lindex [split [$twin index @0,$y] .] 0]
> +  set bps ""
> +
> +  switch $current(mode) {
> +    SRC+ASM {
> +    }
> +    ASSEMBLY {
> +      if {[info exists _map($Cname,line=$line)]} {
> +       set addr $_map($Cname,line=$line)
> +       set bps [gdb_find_bp_at_addr $addr]
> +      } else {
> +       return
> +      }
> +    }
> +    MIXED {
> +      if {[info exists _map($Cname,line=$line)]} {
> +       set addr $_map($Cname,line=$line)
> +       set bps [gdb_find_bp_at_addr $addr]
> +      } else {
> +       return
> +      }
> +    }
> +  }
> +
> +  if {$bps == ""} {
> +    set bps [gdb_find_bp_at_line $current(filename) $line]
> +  }
> +
> +  # ACTION is `enable' or `disable'
> +  gdb_cmd "$action $bps"
> +}
> +
> +# ------------------------------------------------------------------
>  #  METHOD:  remove_bp_at_line - called when a bp tag is clicked on
>  #
>  # when "threads" is set it means to set a bp on each thread in the list.
> Index: srctextwin.ith
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbtk/library/srctextwin.ith,v
> retrieving revision 1.6
> diff -u -r1.6 srctextwin.ith
> --- srctextwin.ith      2000/11/30 22:49:46     1.6
> +++ srctextwin.ith      2000/12/01 04:22:13
> @@ -61,6 +61,7 @@
>      method jump_to_here {{win {}} {y -1} {threads -1}}
>      method set_bp_at_line {{type N} {win {}} {y -1} {threads "-1"}}
>      method remove_bp_at_line {{win {}} {y -1}}
> +    method enable_disable_at_line {action}
>      method set_tp_at_line {{win {}} {y -1}}
>      method next_hit_at_line {{win {}} {y -1}}
>      method remove_tp_at_line {{win {}} {y -1}}

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