view truffle/com.oracle.truffle.tools.debug.shell/src/com/oracle/truffle/tools/debug/shell/package-info.java @ 22510:3874db33f27c

Giving the stuff that isn't intended to be part of truffle-api.jar its own category in Javadoc
author Jaroslav Tulach <jaroslav.tulach@oracle.com>
date Fri, 18 Dec 2015 11:02:21 +0100
parents c3e397ce5941
children
line wrap: on
line source

/*
 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code 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
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/*
 @ApiInfo(
 group="Tools & Extras"
 )
 */

/**
 * This package contains <strong>REPL*</strong>: an experimental framework for
 * building a <em>language-agnostic</em> command-line oriented debugger that:
 * <ul>
 * <li>works with every Truffle-implemented language "out of the box",
 * i.e. requiring minimal additional support by language implementors;</li>
 * <li>works simultaneously, without special configuration, for all Truffle language implementations
 * available to it; and</li>
 * <li>demonstrates Truffle language-interopability by debugging seamlessly
 * across Truffle <em>cross-language</em> calls.</li>
 * </ul>
 * <p>
 * <h4>Goals for building <strong>REPL*</strong></h4>
 * <ol>
 * <li>Exercise and test <em>in action</em> the built-in
 * {@linkplain com.oracle.truffle.api.debug.Debugger} debugging support services
 * provided as part of the Truffle API, which in turn relies on Truffle
 * {@linkplain com.oracle.truffle.api.instrument.Instrumenter Instrumentation}.</li>
 * <li>Emulates a client/server architecture to demonstrate that
 * language-agnostic debugging can be implemented over wire protocols.  Wire
 * protocol communication between client and server is <em>partially</em> emulated
 * by passing messages expressed as textual key-value pairs. The emulation is
 * <em>partial</em> because both run interleaved on a single JVM thread, with some
 * sharing of resources.</li>
 * <li>Provide a working debugger that is always available during development
 * of new Truffle language implementations.</li>
 * <li>Provide a working debugger with extra support for Truffle language
 * development, in particular the ability to inspect the current structure
 * of the Truffle AST around a halted location.</li>
 * </ol>
 * <h4>Command Set</h4>
 * The Command Line Interface (CLI) for <strong>REPL*</strong> is based as
 * much as possible on the CLI for the
 * <a href="http://www.gnu.org/software/gdb/documentation/">GDB Debugger.</a>
 * <h4>REPL* Functionality</h4>
 * Basic navigation:
 * <ul>
 * <li>StepIn (n times)</li>
 * <li>StepOut (n times)</li>
 * <li>StepOver (n times)</li>
 * </ul>
 * Execution:
 * <ul>
 * <li>Load a file source</li>
 * <li>Call a defined symbol</li>
 * </ul>
 * Stack:
 * <ul>
 * <li>List frames in current execution stack</li>
 * <li>Select a frame</li>
 * <li>Display selected frame contents</li>
 * <li>Move frame selection up/down</li>
 * </ul>
 * Evaluate:
 * <ul>
 * <li>Evaluate a Language string in halted context</li>
 * <li>Evaluate a Language string in selected frame</li>
 * </ul>
 * Breakpoints:
 * <ul>
 * <li>Set/create on a specified line</li>
 * <li>Set/create on any throw (before exception created)</li>
 * <li>Enable / Disable</li>
 * <li>One-shot (once only)</li>
 * <li>Get <em>Hit</em> count</li>
 * <li>Set <em>Ignore</em> count</li>
 * <li>Unset/dispose</li>
 * <li>Get all breakpoints</li>
 * <li>Find a breakpoint by UID</li>
 * <li>Set/clear the condition on a breakpoint</li>
 * </ul>
 * Others:
 * <ul>
 * <li>Display halted location in source</li>
 * <li>Nested execution
 * <li>Help</li>
 * <li>Info displays</li>
 * <li>Set/display options</li>
 * <li>Display Truffle AST structure</li>
 * </ul>
 */
package com.oracle.truffle.tools.debug.shell;