# eric4.DebugClients.Ruby.Debuggee

File implementing the real debugger, which is connected to the IDE frontend.

### Global Attributes

None

### Classes

Client | Class handling the connection to the IDE.
Context | Class defining the current execution context.
DEBUGGER__ | Class defining a singleton object for the debugger.
Mutex | Class implementing a mutex.
SilentObject | Class defining an object that ignores all messages.

### Modules

None

### Functions

context | Method returning the context of a thread.
debug_thread_info | Method handling the thread related debug commands.
eventLoop | Method calling the main event loop.
eventPoll | Method calling the main function polling for an event sent by the IDE.
get_thread | Method returning a thread by number.
interrupt | Method to stop execution at the next instruction.
make_thread_list | Method to create a thread list.
thread_list | Method to list the state of a thread.
thread_list_all | Method to list the state of all threads.
traceRuby? | Method to check, if we should trace into the Ruby interpreter libraries.

## Client

Class handling the connection to the IDE.

### Derived from

None

### Class Attributes

None

### Methods

eventLoop | Method calling the main event loop.
eventPoll | Method calling the main function polling for an event sent by the IDE.
initialize | Constructor
printf | Method to print something to the IDE.
printf_clear_breakpoint | Method to report the deletion of a temporary breakpoint to the IDE.
printf_clear_watchexpression | Method to report the deletion of a temporary watch expression to the IDE.
printf_excn | Method to report an exception to the IDE.
printf_exit | Method to report the exit status to the IDE.
printf_line | Method to report the current line and the current stack trace to the IDE.
printf_scriptExcn | Method to report a ScriptError to the IDE.
traceRuby? | Method to check, if we should trace into the Ruby interpreter libraries.

#### Client.eventLoop

eventLoop()

Method calling the main event loop.

#### Client.eventPoll

eventPoll()

Method calling the main function polling for an event sent by the IDE.

#### Client.initialize

initialize()

Constructor

debugger
  reference to the object having the IDE connection.

#### Client.printf

printf()

Method to print something to the IDE.

*args
  Arguments to be printed.

#### Client.printf_clear_breakpoint

printf_clear_breakpoint(line)

Method to report the deletion of a temporary breakpoint to the IDE.

file
  filename of the breakpoint (String)
line
  line number of the breakpoint (int)

#### Client.printf_clear_watchexpression

printf_clear_watchexpression()

Method to report the deletion of a temporary watch expression to the IDE.

cond
  expression of the watch expression (String)

#### Client.printf_excn

printf_excn()

Method to report an exception to the IDE.

exclist
  info about the exception to be reported

#### Client.printf_exit

printf_exit()

Method to report the exit status to the IDE.

status
  exit status of the program (int)

#### Client.printf_line

printf_line()

Method to report the current line and the current stack trace to the IDE.

frames
  reference to the array containing the stack trace.

#### Client.printf_scriptExcn

printf_scriptExcn()

Method to report a ScriptError to the IDE.

exclist
  info about the exception to be reported

#### Client.traceRuby?

traceRuby?()

Method to check, if we should trace into the Ruby interpreter libraries.

Up

## Context

Class defining the current execution context.

### Derived from

None

### Class Attributes

None

### Methods

clear_suspend | Method to clear the suspend state.
current_binding | Method returning the binding object of the current execution frame.
current_frame | Method returning the current execution frame.
eventLoop | Method calling the main event loop.
eventPoll | Method calling the main function polling for an event sent by the IDE.
get_binding | Method returning the binding object of a specific execution frame.
get_frame | Method returning a specific execution frame.
initialize | Constructor
set_suspend | Method to suspend all threads.
step_continue | Method to continue execution until next breakpoint or watch expression.
step_out | Method to set the next stop point after the function call returns.
step_over | Method to set the next stop point skipping function calls.
step_quit | Method to stop debugging.
stop_next | Method to set the next stop point (i.e.
suspend_all | Method to suspend all threads.
traceRuby? | Method to check, if we should trace into the Ruby interpreter libraries.

#### Context.clear_suspend

clear_suspend()

Method to clear the suspend state.

#### Context.current_binding

current_binding()

Method returning the binding object of the current execution frame.

Returns:
  binding object of the current execution frame

#### Context.current_frame

current_frame()

Method returning the current execution frame.

Returns:
  current execution frame

#### Context.eventLoop

eventLoop()

Method calling the main event loop.

#### Context.eventPoll

eventPoll()

Method calling the main function polling for an event sent by the IDE.

#### Context.get_binding

get_binding()

Method returning the binding object of a specific execution frame.

frameno
  frame number of the frame (int)

Returns:
  the requested binding object

#### Context.get_frame

get_frame()

Method returning a specific execution frame.

frameno
  frame number of the frame to be returned (int)

Returns:
  the requested execution frame

#### Context.initialize

initialize()

Constructor

#### Context.set_suspend

set_suspend()

Method to suspend all threads.

#### Context.step_continue

step_continue()

Method to continue execution until next breakpoint or watch expression.

#### Context.step_out

step_out()

Method to set the next stop point after the function call returns.

#### Context.step_over

step_over()

Method to set the next stop point skipping function calls.

counter
  defining the stop point (int)

#### Context.step_quit

step_quit()

Method to stop debugging.

#### Context.stop_next

stop_next()

Method to set the next stop point (i.e. stop at next line).

counter
  defining the stop point (int)

#### Context.suspend_all

suspend_all()

Method to suspend all threads.

#### Context.traceRuby?

traceRuby?()

Method to check, if we should trace into the Ruby interpreter libraries.

Up

## DEBUGGER__

Class defining a singleton object for the debugger.

### Derived from

None

### Class Attributes

MUTEX
SilentClient

### Methods

add_break_point | Method to add a breakpoint.
add_watch_point | Method to add a watch expression.
attach | Method to connect the debugger to the IDE.
attached? | Method returning the attached state.
break_points | Method to return the list of breakpoints
check_break_points | Method to check, if the given position contains an active breakpoint.
check_suspend | Method to check the suspend state.
clear_break_point | Method to delete a specific breakpoint.
clear_watch_point | Method to delete a specific watch expression.
client | Method returning a reference to the client object.
context | Method returning the context of a thread.
debug_command | Method to execute the next debug command.
debug_silent_eval | Method to eval a string without output.
delete_break_point | Method to delete a breakpoint.
delete_watch_point | Method to delete a watch expression.
enable_break_point | Method to set the enabled state of a breakpoint.
enable_watch_point | Method to set the enabled state of a watch expression.
excn_handle | Method to handle an exception
frame_set_pos | Method to set the frame position of the current frame.
ignore_break_point | Method to set the ignore count of a breakpoint.
ignore_watch_point | Method to set the ignore count of a watch expression.
last_thread | Method returning the last active thread.
quit | Method to quit the debugger.
resume | Method to resume the program being debugged.
resume_all | Method to resume all threads.
set_client | Method to set the client handling the connection.
set_last_thread | Method to remember the last thread.
skip_it? | Method to filter out debugger files.
stdout | Method returning the stdout object.
stdout= | Method to set the stdout object.
suspend | Method to suspend the program being debugged.
thnum | Method returning the thread number of the current thread.
trace_func | Method executed by the tracing facility.
waiting | Method returning the waiting list.

#### DEBUGGER__.add_break_point

add_break_point(pos, temp = false, cond = nil)

Method to add a breakpoint.

file
  filename for the breakpoint (String)
pos
  line number for the breakpoint (int)
temp
  flag indicating a temporary breakpoint (boolean)
cond
  condition of a conditional breakpoint (String)

#### DEBUGGER__.add_watch_point

add_watch_point(temp = false)

Method to add a watch expression.

cond
  expression of the watch expression (String)
temp
  flag indicating a temporary watch expression (boolean)

#### DEBUGGER__.attach

attach()

Method to connect the debugger to the IDE.

debugger
  reference to the object handling the communication with the IDE.

#### DEBUGGER__.attached?

attached?()

Method returning the attached state.

Returns:
  flag indicating, whether the debugger is attached to the IDE.

#### DEBUGGER__.break_points

break_points()

Method to return the list of breakpoints

Returns:
  Array containing all breakpoints.

#### DEBUGGER__.check_break_points

check_break_points(pos, binding_, id)

Method to check, if the given position contains an active breakpoint.

file
  filename containing the currently executed line (String)
pos
  line number currently executed (int)
binding_
  current binding object
id
  (ignored)

Returns:
  flag indicating an active breakpoint (boolean)

#### DEBUGGER__.check_suspend

check_suspend()

Method to check the suspend state.

#### DEBUGGER__.clear_break_point

clear_break_point(pos)

Method to delete a specific breakpoint.

file
  filename containing the breakpoint (String)
pos
  line number containing the breakpoint (int)

#### DEBUGGER__.clear_watch_point

clear_watch_point()

Method to delete a specific watch expression.

cond
  expression specifying the watch expression (String)

#### DEBUGGER__.client

client()

Method returning a reference to the client object.

Returns:
  reference to the client object.

#### DEBUGGER__.context

context()

Method returning the context of a thread.

th
  thread object to get the context for

Returns:
  the context for the thread

#### DEBUGGER__.debug_command

debug_command(line, id, binding_)

Method to execute the next debug command.

#### DEBUGGER__.debug_silent_eval

debug_silent_eval(binding_)

Method to eval a string without output.

str
  String containing the expression to be evaluated
binding_
  the binding for the evaluation

Returns:
  the result of the evaluation

#### DEBUGGER__.delete_break_point

delete_break_point(pos)

Method to delete a breakpoint.

file
  filename of the breakpoint (String)
pos
  line number of the breakpoint (int)

#### DEBUGGER__.delete_watch_point

delete_watch_point()

Method to delete a watch expression.

cond
  expression of the watch expression (String)

#### DEBUGGER__.enable_break_point

enable_break_point(pos, enable)

Method to set the enabled state of a breakpoint.

file
  filename of the breakpoint (String)
pos
  line number of the breakpoint (int)
enable
  flag indicating the new enabled state (boolean)

#### DEBUGGER__.enable_watch_point

enable_watch_point(enable)

Method to set the enabled state of a watch expression.

cond
  expression of the watch expression (String)
enable
  flag indicating the new enabled state (boolean)

#### DEBUGGER__.excn_handle

excn_handle(line, id, binding_)

Method to handle an exception

file
  filename containing the currently executed line (String)
pos
  line number currently executed (int)
id
  (ignored)
binding_
  current binding object

#### DEBUGGER__.frame_set_pos

frame_set_pos(line)

Method to set the frame position of the current frame.

#### DEBUGGER__.ignore_break_point

ignore_break_point(pos, count)

Method to set the ignore count of a breakpoint.

file
  filename of the breakpoint (String)
pos
  line number of the breakpoint (int)
count
  ignore count to be set (int)

#### DEBUGGER__.ignore_watch_point

ignore_watch_point(count)

Method to set the ignore count of a watch expression.

cond
  expression of the watch expression (String)
count
  ignore count to be set (int)

#### DEBUGGER__.last_thread

last_thread()

Method returning the last active thread.

Returns:
  active thread

#### DEBUGGER__.quit

quit()

Method to quit the debugger.

status
  exit status of the program

#### DEBUGGER__.resume

resume()

Method to resume the program being debugged.

#### DEBUGGER__.resume_all

resume_all()

Method to resume all threads.

#### DEBUGGER__.set_client

set_client()

Method to set the client handling the connection.

debugger
  reference to the object handling the connection

#### DEBUGGER__.set_last_thread

set_last_thread()

Method to remember the last thread.

th
  thread to be remembered.

#### DEBUGGER__.skip_it?

skip_it?()

Method to filter out debugger files.

Tracing is turned off for files that are part of the debugger that are called from the application being debugged.

file
  name of the file to be checked (String)

Returns:
  flag indicating, whether the file should be skipped (boolean)

#### DEBUGGER__.stdout

stdout()

Method returning the stdout object.

Returns:
  reference to the stdout object

#### DEBUGGER__.stdout=

stdout=()

Method to set the stdout object.

s
  reference to the stdout object

#### DEBUGGER__.suspend

suspend()

Method to suspend the program being debugged.

#### DEBUGGER__.thnum

thnum()

Method returning the thread number of the current thread.

Returns:
  thread number of the current thread.

#### DEBUGGER__.trace_func

trace_func(file, line, id, binding_, klass)

Method executed by the tracing facility.

event
  the tracing event (String)
file
  the name of the file being traced (String)
line
  the line number being traced (int)
id
  object id
binding_
  a binding object
klass
  name of a class

#### DEBUGGER__.waiting

waiting()

Method returning the waiting list.

Returns:
  the waiting list

Up

## Mutex

Class implementing a mutex.

### Derived from

None

### Class Attributes

None

### Methods

initialize | Constructor
lock | Method to lock the mutex.
locked? | Method returning the locked state.
unlock | Method to unlock the mutex.

#### Mutex.initialize

initialize()

Constructor

#### Mutex.lock

lock()

Method to lock the mutex.

Returns:
  the mutex

#### Mutex.locked?

locked?()

Method returning the locked state.

Returns:
  flag indicating the locked state (boolean)

#### Mutex.unlock

unlock()

Method to unlock the mutex.

Returns:
  the mutex

Up

## SilentObject

Class defining an object that ignores all messages.

### Derived from

None

### Class Attributes

None

### Methods

method_missing | Method invoked for all messages it cannot handle.

#### SilentObject.method_missing

method_missing(*a, &b)

Method invoked for all messages it cannot handle.

msg_id
  symbol for the method called
*a
  arguments passed to the missing method
&b
  unknown

Up

## context

context(thread=Thread.current)

Method returning the context of a thread.

th
  threat the context is requested for

Returns:
  context object for the thread

Up

## debug_thread_info

debug_thread_info(input, binding_)

Method handling the thread related debug commands.

input
  debug command (String)
binding_
  reference to the binding object

Up

## eventLoop

eventLoop()

Method calling the main event loop.

Up

## eventPoll

eventPoll()

Method calling the main function polling for an event sent by the IDE.

Up

## get_thread

get_thread(num)

Method returning a thread by number.

num
  thread number (int)

Returns:
  thread with the requested number

Up

## interrupt

interrupt()

Method to stop execution at the next instruction.

Up

## make_thread_list

make_thread_list()

Method to create a thread list.

Up

## thread_list

thread_list(num)

Method to list the state of a thread.

num
  thread number (int)

Up

## thread_list_all

thread_list_all()

Method to list the state of all threads.

Up

## traceRuby?

traceRuby?()

Method to check, if we should trace into the Ruby interpreter libraries.

Up