gdb/
2009-02-05 Tom Tromey <tromey@redhat.com> Thiago Jung Bauermann <bauerman@br.ibm.com> * python/python.c (GdbMethods): Move to bottom of file. (get_parameter, execute_gdb_command, gdbpy_write, gdbpy_flush): Remove forward declarations. (eval_python_from_control_command): Fix error checking of function PyRun_SimpleString. Fix error string. (python_command): Likewise. (execute_gdb_command): Added from_tty argument. gdb/doc/ 2009-02-05 Tom Tromey <tromey@redhat.com> * gdb.texinfo (Basic Python): Document execute's from_tty argument.
This commit is contained in:
parent
314b2e6679
commit
12453b93bd
4 changed files with 65 additions and 31 deletions
|
@ -42,31 +42,10 @@ static int gdbpy_should_print_stack = 1;
|
|||
#include "target.h"
|
||||
#include "gdbthread.h"
|
||||
|
||||
static PyMethodDef GdbMethods[];
|
||||
|
||||
PyObject *gdb_module;
|
||||
|
||||
static PyObject *get_parameter (PyObject *, PyObject *);
|
||||
static PyObject *execute_gdb_command (PyObject *, PyObject *);
|
||||
static PyObject *gdbpy_write (PyObject *, PyObject *);
|
||||
static PyObject *gdbpy_flush (PyObject *, PyObject *);
|
||||
|
||||
static PyMethodDef GdbMethods[] =
|
||||
{
|
||||
{ "history", gdbpy_history, METH_VARARGS,
|
||||
"Get a value from history" },
|
||||
{ "execute", execute_gdb_command, METH_VARARGS,
|
||||
"Execute a gdb command" },
|
||||
{ "get_parameter", get_parameter, METH_VARARGS,
|
||||
"Return a gdb parameter's value" },
|
||||
|
||||
{ "write", gdbpy_write, METH_VARARGS,
|
||||
"Write a string using gdb's filtered stream." },
|
||||
{ "flush", gdbpy_flush, METH_NOARGS,
|
||||
"Flush gdb's filtered stdout stream." },
|
||||
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
/* Given a command_line, return a command string suitable for passing
|
||||
to Python. Lines in the string are separated by newlines. The
|
||||
return value is allocated using xmalloc and the caller is
|
||||
|
@ -102,6 +81,7 @@ compute_python_string (struct command_line *l)
|
|||
void
|
||||
eval_python_from_control_command (struct command_line *cmd)
|
||||
{
|
||||
int ret;
|
||||
char *script;
|
||||
struct cleanup *cleanup;
|
||||
PyGILState_STATE state;
|
||||
|
@ -113,12 +93,12 @@ eval_python_from_control_command (struct command_line *cmd)
|
|||
cleanup = make_cleanup_py_restore_gil (&state);
|
||||
|
||||
script = compute_python_string (cmd->body_list[0]);
|
||||
PyRun_SimpleString (script);
|
||||
ret = PyRun_SimpleString (script);
|
||||
xfree (script);
|
||||
if (PyErr_Occurred ())
|
||||
if (ret)
|
||||
{
|
||||
gdbpy_print_stack ();
|
||||
error (_("error while executing Python code"));
|
||||
error (_("Error while executing Python code."));
|
||||
}
|
||||
|
||||
do_cleanups (cleanup);
|
||||
|
@ -139,11 +119,10 @@ python_command (char *arg, int from_tty)
|
|||
++arg;
|
||||
if (arg && *arg)
|
||||
{
|
||||
PyRun_SimpleString (arg);
|
||||
if (PyErr_Occurred ())
|
||||
if (PyRun_SimpleString (arg))
|
||||
{
|
||||
gdbpy_print_stack ();
|
||||
error (_("error while executing Python code"));
|
||||
error (_("Error while executing Python code."));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -256,14 +235,26 @@ execute_gdb_command (PyObject *self, PyObject *args)
|
|||
{
|
||||
struct cmd_list_element *alias, *prefix, *cmd;
|
||||
char *arg, *newarg;
|
||||
PyObject *from_tty_obj = NULL;
|
||||
int from_tty;
|
||||
int cmp;
|
||||
volatile struct gdb_exception except;
|
||||
|
||||
if (! PyArg_ParseTuple (args, "s", &arg))
|
||||
if (! PyArg_ParseTuple (args, "s|O!", &arg, &PyBool_Type, &from_tty_obj))
|
||||
return NULL;
|
||||
|
||||
from_tty = 0;
|
||||
if (from_tty_obj)
|
||||
{
|
||||
cmp = PyObject_IsTrue (from_tty_obj);
|
||||
if (cmp < 0)
|
||||
return NULL;
|
||||
from_tty = cmp;
|
||||
}
|
||||
|
||||
TRY_CATCH (except, RETURN_MASK_ALL)
|
||||
{
|
||||
execute_command (arg, 0);
|
||||
execute_command (arg, from_tty);
|
||||
}
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
|
||||
|
@ -451,3 +442,26 @@ sys.stdout = GdbOutputFile()\n\
|
|||
|
||||
#endif /* HAVE_PYTHON */
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if HAVE_PYTHON
|
||||
|
||||
static PyMethodDef GdbMethods[] =
|
||||
{
|
||||
{ "history", gdbpy_history, METH_VARARGS,
|
||||
"Get a value from history" },
|
||||
{ "execute", execute_gdb_command, METH_VARARGS,
|
||||
"Execute a gdb command" },
|
||||
{ "get_parameter", get_parameter, METH_VARARGS,
|
||||
"Return a gdb parameter's value" },
|
||||
|
||||
{ "write", gdbpy_write, METH_VARARGS,
|
||||
"Write a string using gdb's filtered stream." },
|
||||
{ "flush", gdbpy_flush, METH_NOARGS,
|
||||
"Flush gdb's filtered stdout stream." },
|
||||
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
#endif /* HAVE_PYTHON */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue