blob: 630f460456960879d237af54dee934595d393daa [file] [log] [blame]
# GDB event class implementations for Insight.
# Copyright (C) 2001 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License (GPL) as published by
# the Free Software Foundation; either version 2 of the License, or (at
# your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# ------------------------------------------------------------
# PUBLIC METHOD: get - Retrieve data about the event
# ------------------------------------------------------------
itcl::body BreakpointEvent::get {what} {
switch $what {
action { return $action }
number { return $number }
file { return $_file }
function { return $_function }
line { return $_line }
address { return $_address }
type { return $_type }
enabled { return $_enabled }
disposition { return $_disposition }
ignore_count { return $_ignore_count }
commands { return $_commands }
condition { return $_condition }
thread { return $_thread }
hit_count { return $_hit_count }
user_specification { return $_user_specification }
default { error "unknown event data \"$what\": should be: action|number|file|function|line|address|type|enabled|disposition|ignore_count|commands|condition|thread|hit_count|user_specification" }
}
}
# ------------------------------------------------------------
# PRIVATE METHOD: _init - Initialize all private data
# ------------------------------------------------------------
itcl::body BreakpointEvent::_init {} {
if {[catch {gdb_get_breakpoint_info $number} bpinfo]} {
set _file {}
set _function {}
set _line {}
set _address {}
set _type {}
set _enabled {}
set _disposition {}
set _ignore_count {}
set _commands {}
set _condition {}
set _thread {}
set _hit_count {}
set _user_specification {}
} else {
lassign $bpinfo \
_file \
_function \
_line \
_address \
_type \
_enabled \
_disposition \
_ignore_count \
_commands \
_condition \
_thread \
_hit_count \
_user_specification
}
}
# When the breakpoint number for the event changes,
# update the private data in the event.
itcl::configbody BreakpointEvent::number {
_init
}
# ------------------------------------------------------------
# PUBLIC METHOD: get - Retrieve data about the event
# ------------------------------------------------------------
itcl::body TracepointEvent::get {what} {
switch $what {
action { return $action }
number { return $number }
file { return $_file }
function { return $_function }
line { return $_line }
address { return $_address }
enabled { return $_enabled }
pass_count { return $_pass_count }
step_count { return $_step_count }
thread { return $_thread }
hit_count { return $_hit_count }
actions { return $_actions }
default { error "unknown event data \"$what\": should be: action|number|file|function|line|address|pass_count|step_count|thread|hit_count|actions" }
}
}
# ------------------------------------------------------------
# PRIVATE METHOD: _init - Initialize all private data
# ------------------------------------------------------------
itcl::body TracepointEvent::_init {} {
if {[catch {gdb_get_tracepoint_info $number} tpinfo]} {
set _file {}
set _function {}
set _line {}
set _address {}
set _enabled {}
set _pass_count {}
set _step_count {}
set _thread {}
set _hit_count {}
set _actions {}
} else {
lassign $tpinfo \
_file \
_function \
_line \
_address \
_enabled \
_pass_count \
_step_count \
_thread \
_hit_count \
_actions
}
}
# When the tracepoint number for the event changes,
# update the private data in the event.
itcl::configbody TracepointEvent::number {
_init
}
# ------------------------------------------------------------
# PUBLIC METHOD: get - Retrieve data about the event
# ------------------------------------------------------------
itcl::body TracepointEvent::get {what} {
switch $what {
action { return $action }
number { return $number }
file { return $_file }
function { return $_function }
line { return $_line }
address { return $_address }
enabled { return $_enabled }
pass_count { return $_pass_count }
step_count { return $_step_count }
thread { return $_thread }
hit_count { return $_hit_count }
actions { return $_actions }
default { error "unknown event data \"$what\": should be: action|number|file|function|line|address|pass_count|step_count|thread|hit_count|actions" }
}
}
# ------------------------------------------------------------
# PUBLIC METHOD: get - Retrieve data about the event
# ------------------------------------------------------------
itcl::body SetVariableEvent::get {what} {
switch $what {
variable { return $variable }
value { return $value }
default { error "unknown event data \"$what\": should be: variable|value" }
}
}
# ------------------------------------------------------------
# CONSTRUCTOR: Create an UpdateEvent
# ------------------------------------------------------------
itcl::body UpdateEvent::constructor {args} {
if {[catch {gdb_loc} loc]} {
dbug E "could not get current location: $loc"
} else {
lassign $loc _compile_filename _function _full_filename \
_line _frame_pc _pc _shlib
}
}
# ------------------------------------------------------------
# PUBLIC METHOD: get - Retrieve data about the event
# ------------------------------------------------------------
itcl::body UpdateEvent::get {what} {
switch $what {
compile_filename { return $_compile_filename }
full_filename { return $_full_filename }
function { return $_function }
line { return $_line }
frame_pc { return $_frame_pc }
pc { return $_pc }
shlib { return $_shlib }
default { error "unknown event data \"$what\": should be: variable|value" }
}
}