You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
6.6 KiB
Plaintext
206 lines
6.6 KiB
Plaintext
15 years ago
|
# 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" }
|
||
|
}
|
||
|
}
|