1 /* General python/gdb code
3 Copyright (C) 2008-2021 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21 #include "arch-utils.h"
24 #include "cli/cli-script.h"
26 #include "progspace.h"
30 #include "gdbsupport/event-loop.h"
31 #include "readline/tilde.h"
33 #include "extension-priv.h"
34 #include "cli/cli-utils.h"
37 #include "run-on-main-thread.h"
38 #include "gdbsupport/selftest.h"
40 /* Declared constants and enum for python stack printing. */
41 static const char python_excp_none[] = "none";
42 static const char python_excp_full[] = "full";
43 static const char python_excp_message[] = "message";
45 /* "set python print-stack" choices. */
46 static const char *const python_excp_enums[] =
54 /* The exception printing variable. 'full' if we want to print the
55 error message and stack, 'none' if we want to print nothing, and
56 'message' if we only want to print the error message. 'message' is
58 static const char *gdbpy_should_print_stack = python_excp_message;
61 /* Forward decls, these are defined later. */
62 extern const struct extension_language_script_ops python_extension_script_ops;
63 extern const struct extension_language_ops python_extension_ops;
66 /* The main struct describing GDB's interface to the Python
67 extension language. */
68 const struct extension_language_defn extension_language_python =
80 &python_extension_script_ops,
90 #include "cli/cli-decode.h"
93 #include "python-internal.h"
96 #include "gdbsupport/version.h"
98 #include "gdbthread.h"
100 #include "event-top.h"
101 #include "py-event.h"
103 /* True if Python has been successfully initialized, false
106 int gdb_python_initialized;
108 extern PyMethodDef python_GdbMethods[];
110 PyObject *gdb_module;
111 PyObject *gdb_python_module;
113 /* Some string constants we may wish to use. */
114 PyObject *gdbpy_to_string_cst;
115 PyObject *gdbpy_children_cst;
116 PyObject *gdbpy_display_hint_cst;
117 PyObject *gdbpy_doc_cst;
118 PyObject *gdbpy_enabled_cst;
119 PyObject *gdbpy_value_cst;
121 /* The GdbError exception. */
122 PyObject *gdbpy_gdberror_exc;
124 /* The `gdb.error' base class. */
125 PyObject *gdbpy_gdb_error;
127 /* The `gdb.MemoryError' exception. */
128 PyObject *gdbpy_gdb_memory_error;
130 static script_sourcer_func gdbpy_source_script;
131 static objfile_script_sourcer_func gdbpy_source_objfile_script;
132 static objfile_script_executor_func gdbpy_execute_objfile_script;
133 static void gdbpy_initialize (const struct extension_language_defn *);
134 static int gdbpy_initialized (const struct extension_language_defn *);
135 static void gdbpy_eval_from_control_command
136 (const struct extension_language_defn *, struct command_line *cmd);
137 static void gdbpy_start_type_printers (const struct extension_language_defn *,
138 struct ext_lang_type_printers *);
139 static enum ext_lang_rc gdbpy_apply_type_printers
140 (const struct extension_language_defn *,
141 const struct ext_lang_type_printers *, struct type *, char **);
142 static void gdbpy_free_type_printers (const struct extension_language_defn *,
143 struct ext_lang_type_printers *);
144 static void gdbpy_set_quit_flag (const struct extension_language_defn *);
145 static int gdbpy_check_quit_flag (const struct extension_language_defn *);
146 static enum ext_lang_rc gdbpy_before_prompt_hook
147 (const struct extension_language_defn *, const char *current_gdb_prompt);
148 static gdb::optional<std::string> gdbpy_colorize
149 (const std::string &filename, const std::string &contents);
151 /* The interface between gdb proper and loading of python scripts. */
153 const struct extension_language_script_ops python_extension_script_ops =
156 gdbpy_source_objfile_script,
157 gdbpy_execute_objfile_script,
158 gdbpy_auto_load_enabled
161 /* The interface between gdb proper and python extensions. */
163 const struct extension_language_ops python_extension_ops =
168 gdbpy_eval_from_control_command,
170 gdbpy_start_type_printers,
171 gdbpy_apply_type_printers,
172 gdbpy_free_type_printers,
174 gdbpy_apply_val_pretty_printer,
176 gdbpy_apply_frame_filter,
178 gdbpy_preserve_values,
180 gdbpy_breakpoint_has_cond,
181 gdbpy_breakpoint_cond_says_stop,
184 gdbpy_check_quit_flag,
186 gdbpy_before_prompt_hook,
188 gdbpy_get_matching_xmethod_workers,
193 /* Architecture and language to be used in callbacks from
194 the Python interpreter. */
195 struct gdbarch *python_gdbarch;
196 const struct language_defn *python_language;
198 gdbpy_enter::gdbpy_enter (struct gdbarch *gdbarch,
199 const struct language_defn *language)
200 : m_gdbarch (python_gdbarch),
201 m_language (python_language)
203 /* We should not ever enter Python unless initialized. */
204 if (!gdb_python_initialized)
205 error (_("Python not initialized"));
207 m_previous_active = set_active_ext_lang (&extension_language_python);
209 m_state = PyGILState_Ensure ();
211 python_gdbarch = gdbarch;
212 python_language = language;
214 /* Save it and ensure ! PyErr_Occurred () afterwards. */
218 gdbpy_enter::~gdbpy_enter ()
220 /* Leftover Python error is forbidden by Python Exception Handling. */
221 if (PyErr_Occurred ())
223 /* This order is similar to the one calling error afterwards. */
224 gdbpy_print_stack ();
225 warning (_("internal error: Unhandled Python exception"));
230 python_gdbarch = m_gdbarch;
231 python_language = m_language;
233 restore_active_ext_lang (m_previous_active);
234 PyGILState_Release (m_state);
237 /* A helper class to save and restore the GIL, but without touching
238 the other globals that are handled by gdbpy_enter. */
245 : m_state (PyGILState_Ensure ())
251 PyGILState_Release (m_state);
254 DISABLE_COPY_AND_ASSIGN (gdbpy_gil);
258 PyGILState_STATE m_state;
261 /* Set the quit flag. */
264 gdbpy_set_quit_flag (const struct extension_language_defn *extlang)
266 PyErr_SetInterrupt ();
269 /* Return true if the quit flag has been set, false otherwise. */
272 gdbpy_check_quit_flag (const struct extension_language_defn *extlang)
274 if (!gdb_python_initialized)
278 return PyOS_InterruptOccurred ();
281 /* Evaluate a Python command like PyRun_SimpleString, but uses
282 Py_single_input which prints the result of expressions, and does
283 not automatically print the stack on errors. */
286 eval_python_command (const char *command)
290 m = PyImport_AddModule ("__main__");
294 d = PyModule_GetDict (m);
297 gdbpy_ref<> v (PyRun_StringFlags (command, Py_single_input, d, d, NULL));
309 /* Implementation of the gdb "python-interactive" command. */
312 python_interactive_command (const char *arg, int from_tty)
314 struct ui *ui = current_ui;
317 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
319 arg = skip_spaces (arg);
321 gdbpy_enter enter_py (get_current_arch (), current_language);
325 std::string script = std::string (arg) + "\n";
326 err = eval_python_command (script.c_str ());
330 err = PyRun_InteractiveLoop (ui->instream, "<stdin>");
336 gdbpy_print_stack ();
337 error (_("Error while executing Python code."));
341 /* A wrapper around PyRun_SimpleFile. FILE is the Python script to run
344 On Windows hosts few users would build Python themselves (this is no
345 trivial task on this platform), and thus use binaries built by
346 someone else instead. There may happen situation where the Python
347 library and GDB are using two different versions of the C runtime
348 library. Python, being built with VC, would use one version of the
349 msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
350 A FILE * from one runtime does not necessarily operate correctly in
353 To work around this potential issue, we run code in Python to load
357 python_run_simple_file (FILE *file, const char *filename)
361 PyRun_SimpleFile (file, filename);
365 /* Because we have a string for a filename, and are using Python to
366 open the file, we need to expand any tilde in the path first. */
367 gdb::unique_xmalloc_ptr<char> full_path (tilde_expand (filename));
369 if (gdb_python_module == nullptr
370 || ! PyObject_HasAttrString (gdb_python_module, "_execute_file"))
371 error (_("Installation error: gdb._execute_file function is missing"));
373 gdbpy_ref<> return_value
374 (PyObject_CallMethod (gdb_python_module, "_execute_file", "s",
376 if (return_value == nullptr)
378 /* Use PyErr_PrintEx instead of gdbpy_print_stack to better match the
379 behavior of the non-Windows codepath. */
386 /* Given a command_line, return a command string suitable for passing
387 to Python. Lines in the string are separated by newlines. */
390 compute_python_string (struct command_line *l)
392 struct command_line *iter;
395 for (iter = l; iter; iter = iter->next)
397 script += iter->line;
403 /* Take a command line structure representing a 'python' command, and
404 evaluate its body using the Python interpreter. */
407 gdbpy_eval_from_control_command (const struct extension_language_defn *extlang,
408 struct command_line *cmd)
412 if (cmd->body_list_1 != nullptr)
413 error (_("Invalid \"python\" block structure."));
415 gdbpy_enter enter_py (get_current_arch (), current_language);
417 std::string script = compute_python_string (cmd->body_list_0.get ());
418 ret = PyRun_SimpleString (script.c_str ());
420 error (_("Error while executing Python code."));
423 /* Implementation of the gdb "python" command. */
426 python_command (const char *arg, int from_tty)
428 gdbpy_enter enter_py (get_current_arch (), current_language);
430 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
432 arg = skip_spaces (arg);
435 if (PyRun_SimpleString (arg))
436 error (_("Error while executing Python code."));
440 counted_command_line l = get_command_line (python_control, "");
442 execute_control_command_untraced (l.get ());
448 /* Transform a gdb parameters's value into a Python value. May return
449 NULL (and set a Python exception) on error. Helper function for
452 gdbpy_parameter_value (enum var_types type, void *var)
457 case var_string_noescape:
458 case var_optional_filename:
462 const char *str = *(char **) var;
466 return host_string_to_python_string (str).release ();
477 case var_auto_boolean:
479 enum auto_boolean ab = * (enum auto_boolean *) var;
481 if (ab == AUTO_BOOLEAN_TRUE)
483 else if (ab == AUTO_BOOLEAN_FALSE)
490 if ((* (int *) var) == INT_MAX)
494 case var_zuinteger_unlimited:
495 return gdb_py_object_from_longest (* (int *) var).release ();
499 unsigned int val = * (unsigned int *) var;
503 return gdb_py_object_from_ulongest (val).release ();
508 unsigned int val = * (unsigned int *) var;
509 return gdb_py_object_from_ulongest (val).release ();
513 return PyErr_Format (PyExc_RuntimeError,
514 _("Programmer error: unhandled type."));
517 /* A Python function which returns a gdb parameter's value as a Python
521 gdbpy_parameter (PyObject *self, PyObject *args)
523 struct cmd_list_element *alias, *prefix, *cmd;
527 if (! PyArg_ParseTuple (args, "s", &arg))
530 std::string newarg = std::string ("show ") + arg;
534 found = lookup_cmd_composition (newarg.c_str (), &alias, &prefix, &cmd);
536 catch (const gdb_exception &ex)
538 GDB_PY_HANDLE_EXCEPTION (ex);
542 return PyErr_Format (PyExc_RuntimeError,
543 _("Could not find parameter `%s'."), arg);
546 return PyErr_Format (PyExc_RuntimeError,
547 _("`%s' is not a parameter."), arg);
548 return gdbpy_parameter_value (cmd->var_type, cmd->var);
551 /* Wrapper for target_charset. */
554 gdbpy_target_charset (PyObject *self, PyObject *args)
556 const char *cset = target_charset (python_gdbarch);
558 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
561 /* Wrapper for target_wide_charset. */
564 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
566 const char *cset = target_wide_charset (python_gdbarch);
568 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
571 /* A Python function which evaluates a string using the gdb CLI. */
574 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
577 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
578 int from_tty, to_string;
579 static const char *keywords[] = { "command", "from_tty", "to_string", NULL };
581 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
582 &PyBool_Type, &from_tty_obj,
583 &PyBool_Type, &to_string_obj))
589 int cmp = PyObject_IsTrue (from_tty_obj);
598 int cmp = PyObject_IsTrue (to_string_obj);
604 std::string to_string_res;
606 scoped_restore preventer = prevent_dont_repeat ();
610 gdbpy_allow_threads allow_threads;
612 struct interp *interp;
614 std::string arg_copy = arg;
616 char *save_ptr = nullptr;
620 const char *result = strtok_r (first ? &arg_copy[0] : nullptr,
626 counted_command_line lines = read_command_lines_1 (reader, 1, nullptr);
629 scoped_restore save_async = make_scoped_restore (¤t_ui->async,
632 scoped_restore save_uiout = make_scoped_restore (¤t_uiout);
634 /* Use the console interpreter uiout to have the same print format
635 for console or MI. */
636 interp = interp_lookup (current_ui, "console");
637 current_uiout = interp->interp_ui_out ();
640 to_string_res = execute_control_commands_to_string (lines.get (),
643 execute_control_commands (lines.get (), from_tty);
646 /* Do any commands attached to breakpoint we stopped at. */
647 bpstat_do_actions ();
649 catch (const gdb_exception &except)
651 /* If an exception occurred then we won't hit normal_stop (), or have
652 an exception reach the top level of the event loop, which are the
653 two usual places in which stdin would be re-enabled. So, before we
654 convert the exception and continue back in Python, we should
655 re-enable stdin here. */
656 async_enable_stdin ();
657 GDB_PY_HANDLE_EXCEPTION (except);
661 return PyString_FromString (to_string_res.c_str ());
665 /* Implementation of Python rbreak command. Take a REGEX and
666 optionally a MINSYMS, THROTTLE and SYMTABS keyword and return a
667 Python list that contains newly set breakpoints that match that
668 criteria. REGEX refers to a GDB format standard regex pattern of
669 symbols names to search; MINSYMS is an optional boolean (default
670 False) that indicates if the function should search GDB's minimal
671 symbols; THROTTLE is an optional integer (default unlimited) that
672 indicates the maximum amount of breakpoints allowable before the
673 function exits (note, if the throttle bound is passed, no
674 breakpoints will be set and a runtime error returned); SYMTABS is
675 an optional Python iterable that contains a set of gdb.Symtabs to
676 constrain the search within. */
679 gdbpy_rbreak (PyObject *self, PyObject *args, PyObject *kw)
682 std::vector<symbol_search> symbols;
683 unsigned long count = 0;
684 PyObject *symtab_list = NULL;
685 PyObject *minsyms_p_obj = NULL;
687 unsigned int throttle = 0;
688 static const char *keywords[] = {"regex","minsyms", "throttle",
691 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|O!IO", keywords,
692 ®ex, &PyBool_Type,
693 &minsyms_p_obj, &throttle,
697 /* Parse minsyms keyword. */
698 if (minsyms_p_obj != NULL)
700 int cmp = PyObject_IsTrue (minsyms_p_obj);
706 global_symbol_searcher spec (FUNCTIONS_DOMAIN, regex);
708 for (const char *elem : spec.filenames)
709 xfree ((void *) elem);
712 /* The "symtabs" keyword is any Python iterable object that returns
713 a gdb.Symtab on each iteration. If specified, iterate through
714 the provided gdb.Symtabs and extract their full path. As
715 python_string_to_target_string returns a
716 gdb::unique_xmalloc_ptr<char> and a vector containing these types
717 cannot be coerced to a const char **p[] via the vector.data call,
718 release the value from the unique_xmalloc_ptr and place it in a
719 simple type symtab_list_type (which holds the vector and a
720 destructor that frees the contents of the allocated strings. */
721 if (symtab_list != NULL)
723 gdbpy_ref<> iter (PyObject_GetIter (symtab_list));
730 gdbpy_ref<> next (PyIter_Next (iter.get ()));
734 if (PyErr_Occurred ())
739 gdbpy_ref<> obj_name (PyObject_GetAttrString (next.get (),
742 if (obj_name == NULL)
745 /* Is the object file still valid? */
746 if (obj_name == Py_None)
749 gdb::unique_xmalloc_ptr<char> filename =
750 python_string_to_target_string (obj_name.get ());
752 if (filename == NULL)
755 /* Make sure there is a definite place to store the value of
756 filename before it is released. */
757 spec.filenames.push_back (nullptr);
758 spec.filenames.back () = filename.release ();
762 /* The search spec. */
763 symbols = spec.search ();
765 /* Count the number of symbols (both symbols and optionally minimal
766 symbols) so we can correctly check the throttle limit. */
767 for (const symbol_search &p : symbols)
769 /* Minimal symbols included? */
772 if (p.msymbol.minsym != NULL)
776 if (p.symbol != NULL)
780 /* Check throttle bounds and exit if in excess. */
781 if (throttle != 0 && count > throttle)
783 PyErr_SetString (PyExc_RuntimeError,
784 _("Number of breakpoints exceeds throttled maximum."));
788 gdbpy_ref<> return_list (PyList_New (0));
790 if (return_list == NULL)
793 /* Construct full path names for symbols and call the Python
794 breakpoint constructor on the resulting names. Be tolerant of
795 individual breakpoint failures. */
796 for (const symbol_search &p : symbols)
798 std::string symbol_name;
800 /* Skipping minimal symbols? */
802 if (p.msymbol.minsym != NULL)
805 if (p.msymbol.minsym == NULL)
807 struct symtab *symtab = symbol_symtab (p.symbol);
808 const char *fullname = symtab_to_fullname (symtab);
810 symbol_name = fullname;
812 symbol_name += p.symbol->linkage_name ();
815 symbol_name = p.msymbol.minsym->linkage_name ();
817 gdbpy_ref<> argList (Py_BuildValue("(s)", symbol_name.c_str ()));
818 gdbpy_ref<> obj (PyObject_CallObject ((PyObject *)
819 &breakpoint_object_type,
822 /* Tolerate individual breakpoint failures. */
824 gdbpy_print_stack ();
827 if (PyList_Append (return_list.get (), obj.get ()) == -1)
831 return return_list.release ();
834 /* A Python function which is a wrapper for decode_line_1. */
837 gdbpy_decode_line (PyObject *self, PyObject *args)
839 const char *arg = NULL;
841 gdbpy_ref<> unparsed;
842 event_location_up location;
844 if (! PyArg_ParseTuple (args, "|s", &arg))
847 /* Treat a string consisting of just whitespace the same as
851 arg = skip_spaces (arg);
857 location = string_to_event_location_basic (&arg, python_language,
858 symbol_name_match_type::WILD);
860 std::vector<symtab_and_line> decoded_sals;
861 symtab_and_line def_sal;
862 gdb::array_view<symtab_and_line> sals;
865 if (location != NULL)
867 decoded_sals = decode_line_1 (location.get (), 0, NULL, NULL, 0);
872 set_default_source_symtab_and_line ();
873 def_sal = get_current_source_symtab_and_line ();
877 catch (const gdb_exception &ex)
879 /* We know this will always throw. */
880 gdbpy_convert_exception (ex);
886 result.reset (PyTuple_New (sals.size ()));
889 for (size_t i = 0; i < sals.size (); ++i)
891 PyObject *obj = symtab_and_line_to_sal_object (sals[i]);
895 PyTuple_SetItem (result.get (), i, obj);
899 result = gdbpy_ref<>::new_reference (Py_None);
901 gdbpy_ref<> return_result (PyTuple_New (2));
902 if (return_result == NULL)
905 if (arg != NULL && strlen (arg) > 0)
907 unparsed.reset (PyString_FromString (arg));
908 if (unparsed == NULL)
912 unparsed = gdbpy_ref<>::new_reference (Py_None);
914 PyTuple_SetItem (return_result.get (), 0, unparsed.release ());
915 PyTuple_SetItem (return_result.get (), 1, result.release ());
917 return return_result.release ();
920 /* Parse a string and evaluate it as an expression. */
922 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
924 const char *expr_str;
925 struct value *result = NULL;
927 if (!PyArg_ParseTuple (args, "s", &expr_str))
932 gdbpy_allow_threads allow_threads;
933 result = parse_and_eval (expr_str);
935 catch (const gdb_exception &except)
937 GDB_PY_HANDLE_EXCEPTION (except);
940 return value_to_value_object (result);
943 /* Implementation of gdb.invalidate_cached_frames. */
946 gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args)
948 reinit_frame_cache ();
952 /* Read a file as Python code.
953 This is the extension_language_script_ops.script_sourcer "method".
954 FILE is the file to load. FILENAME is name of the file FILE.
955 This does not throw any errors. If an exception occurs python will print
956 the traceback and clear the error indicator. */
959 gdbpy_source_script (const struct extension_language_defn *extlang,
960 FILE *file, const char *filename)
962 gdbpy_enter enter_py (get_current_arch (), current_language);
963 python_run_simple_file (file, filename);
968 /* Posting and handling events. */
970 /* A single event. */
973 gdbpy_event (gdbpy_ref<> &&func)
974 : m_func (func.release ())
978 gdbpy_event (gdbpy_event &&other) noexcept
979 : m_func (other.m_func)
981 other.m_func = nullptr;
984 gdbpy_event (const gdbpy_event &other)
985 : m_func (other.m_func)
997 gdbpy_event &operator= (const gdbpy_event &other) = delete;
1001 gdbpy_enter enter_py (get_current_arch (), current_language);
1003 gdbpy_ref<> call_result (PyObject_CallObject (m_func, NULL));
1004 if (call_result == NULL)
1005 gdbpy_print_stack ();
1010 /* The Python event. This is just a callable object. Note that
1011 this is not a gdbpy_ref<>, because we have to take particular
1012 care to only destroy the reference when holding the GIL. */
1016 /* Submit an event to the gdb thread. */
1018 gdbpy_post_event (PyObject *self, PyObject *args)
1022 if (!PyArg_ParseTuple (args, "O", &func))
1025 if (!PyCallable_Check (func))
1027 PyErr_SetString (PyExc_RuntimeError,
1028 _("Posted event is not callable"));
1032 gdbpy_ref<> func_ref = gdbpy_ref<>::new_reference (func);
1033 gdbpy_event event (std::move (func_ref));
1034 run_on_main_thread (event);
1041 /* This is the extension_language_ops.before_prompt "method". */
1043 static enum ext_lang_rc
1044 gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
1045 const char *current_gdb_prompt)
1047 if (!gdb_python_initialized)
1048 return EXT_LANG_RC_NOP;
1050 gdbpy_enter enter_py (get_current_arch (), current_language);
1052 if (!evregpy_no_listeners_p (gdb_py_events.before_prompt)
1053 && evpy_emit_event (NULL, gdb_py_events.before_prompt) < 0)
1054 return EXT_LANG_RC_ERROR;
1056 if (gdb_python_module
1057 && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
1059 gdbpy_ref<> hook (PyObject_GetAttrString (gdb_python_module,
1063 gdbpy_print_stack ();
1064 return EXT_LANG_RC_ERROR;
1067 if (PyCallable_Check (hook.get ()))
1069 gdbpy_ref<> current_prompt (PyString_FromString (current_gdb_prompt));
1070 if (current_prompt == NULL)
1072 gdbpy_print_stack ();
1073 return EXT_LANG_RC_ERROR;
1077 (PyObject_CallFunctionObjArgs (hook.get (), current_prompt.get (),
1081 gdbpy_print_stack ();
1082 return EXT_LANG_RC_ERROR;
1085 /* Return type should be None, or a String. If it is None,
1086 fall through, we will not set a prompt. If it is a
1087 string, set PROMPT. Anything else, set an exception. */
1088 if (result != Py_None && ! PyString_Check (result.get ()))
1090 PyErr_Format (PyExc_RuntimeError,
1091 _("Return from prompt_hook must " \
1092 "be either a Python string, or None"));
1093 gdbpy_print_stack ();
1094 return EXT_LANG_RC_ERROR;
1097 if (result != Py_None)
1099 gdb::unique_xmalloc_ptr<char>
1100 prompt (python_string_to_host_string (result.get ()));
1104 gdbpy_print_stack ();
1105 return EXT_LANG_RC_ERROR;
1108 set_prompt (prompt.get ());
1109 return EXT_LANG_RC_OK;
1114 return EXT_LANG_RC_NOP;
1117 /* This is the extension_language_ops.colorize "method". */
1119 static gdb::optional<std::string>
1120 gdbpy_colorize (const std::string &filename, const std::string &contents)
1122 if (!gdb_python_initialized)
1125 gdbpy_enter enter_py (get_current_arch (), current_language);
1127 if (gdb_python_module == nullptr
1128 || !PyObject_HasAttrString (gdb_python_module, "colorize"))
1131 gdbpy_ref<> hook (PyObject_GetAttrString (gdb_python_module, "colorize"));
1132 if (hook == nullptr)
1134 gdbpy_print_stack ();
1138 if (!PyCallable_Check (hook.get ()))
1141 gdbpy_ref<> fname_arg (PyString_FromString (filename.c_str ()));
1142 if (fname_arg == nullptr)
1144 gdbpy_print_stack ();
1147 gdbpy_ref<> contents_arg (PyString_FromString (contents.c_str ()));
1148 if (contents_arg == nullptr)
1150 gdbpy_print_stack ();
1154 gdbpy_ref<> result (PyObject_CallFunctionObjArgs (hook.get (),
1156 contents_arg.get (),
1158 if (result == nullptr)
1160 gdbpy_print_stack ();
1164 if (!gdbpy_is_string (result.get ()))
1167 gdbpy_ref<> unic = python_string_to_unicode (result.get ());
1168 if (unic == nullptr)
1170 gdbpy_print_stack ();
1173 gdbpy_ref<> host_str (PyUnicode_AsEncodedString (unic.get (),
1176 if (host_str == nullptr)
1178 gdbpy_print_stack ();
1182 return std::string (PyBytes_AsString (host_str.get ()));
1189 /* A python function to write a single string using gdb's filtered
1190 output stream . The optional keyword STREAM can be used to write
1191 to a particular stream. The default stream is to gdb_stdout. */
1194 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
1197 static const char *keywords[] = { "text", "stream", NULL };
1198 int stream_type = 0;
1200 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1206 switch (stream_type)
1210 fprintf_filtered (gdb_stderr, "%s", arg);
1215 fprintf_filtered (gdb_stdlog, "%s", arg);
1219 fprintf_filtered (gdb_stdout, "%s", arg);
1222 catch (const gdb_exception &except)
1224 GDB_PY_HANDLE_EXCEPTION (except);
1230 /* A python function to flush a gdb stream. The optional keyword
1231 STREAM can be used to flush a particular stream. The default stream
1235 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1237 static const char *keywords[] = { "stream", NULL };
1238 int stream_type = 0;
1240 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1244 switch (stream_type)
1248 gdb_flush (gdb_stderr);
1253 gdb_flush (gdb_stdlog);
1257 gdb_flush (gdb_stdout);
1263 /* Return non-zero if print-stack is not "none". */
1266 gdbpy_print_python_errors_p (void)
1268 return gdbpy_should_print_stack != python_excp_none;
1271 /* Print a python exception trace, print just a message, or print
1272 nothing and clear the python exception, depending on
1273 gdbpy_should_print_stack. Only call this if a python exception is
1276 gdbpy_print_stack (void)
1279 /* Print "none", just clear exception. */
1280 if (gdbpy_should_print_stack == python_excp_none)
1284 /* Print "full" message and backtrace. */
1285 else if (gdbpy_should_print_stack == python_excp_full)
1288 /* PyErr_Print doesn't necessarily end output with a newline.
1289 This works because Python's stdout/stderr is fed through
1295 catch (const gdb_exception &except)
1299 /* Print "message", just error print message. */
1302 gdbpy_err_fetch fetched_error;
1304 gdb::unique_xmalloc_ptr<char> msg = fetched_error.to_string ();
1305 gdb::unique_xmalloc_ptr<char> type;
1306 /* Don't compute TYPE if MSG already indicates that there is an
1309 type = fetched_error.type_to_string ();
1313 if (msg == NULL || type == NULL)
1315 /* An error occurred computing the string representation of the
1317 fprintf_filtered (gdb_stderr,
1318 _("Error occurred computing Python error" \
1323 fprintf_filtered (gdb_stderr, "Python Exception %s: %s\n",
1324 type.get (), msg.get ());
1326 catch (const gdb_exception &except)
1332 /* Like gdbpy_print_stack, but if the exception is a
1333 KeyboardException, throw a gdb "quit" instead. */
1336 gdbpy_print_stack_or_quit ()
1338 if (PyErr_ExceptionMatches (PyExc_KeyboardInterrupt))
1341 throw_quit ("Quit");
1343 gdbpy_print_stack ();
1348 /* Return a sequence holding all the Progspaces. */
1351 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1353 gdbpy_ref<> list (PyList_New (0));
1357 for (struct program_space *ps : program_spaces)
1359 gdbpy_ref<> item = pspace_to_pspace_object (ps);
1361 if (item == NULL || PyList_Append (list.get (), item.get ()) == -1)
1365 return list.release ();
1370 /* The "current" objfile. This is set when gdb detects that a new
1371 objfile has been loaded. It is only set for the duration of a call to
1372 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1374 static struct objfile *gdbpy_current_objfile;
1376 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1377 as Python code. This does not throw any errors. If an exception
1378 occurs python will print the traceback and clear the error indicator.
1379 This is the extension_language_script_ops.objfile_script_sourcer
1383 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1384 struct objfile *objfile, FILE *file,
1385 const char *filename)
1387 if (!gdb_python_initialized)
1390 gdbpy_enter enter_py (objfile->arch (), current_language);
1391 scoped_restore restire_current_objfile
1392 = make_scoped_restore (&gdbpy_current_objfile, objfile);
1394 python_run_simple_file (file, filename);
1397 /* Set the current objfile to OBJFILE and then execute SCRIPT
1398 as Python code. This does not throw any errors. If an exception
1399 occurs python will print the traceback and clear the error indicator.
1400 This is the extension_language_script_ops.objfile_script_executor
1404 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1405 struct objfile *objfile, const char *name,
1408 if (!gdb_python_initialized)
1411 gdbpy_enter enter_py (objfile->arch (), current_language);
1412 scoped_restore restire_current_objfile
1413 = make_scoped_restore (&gdbpy_current_objfile, objfile);
1415 PyRun_SimpleString (script);
1418 /* Return the current Objfile, or None if there isn't one. */
1421 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1423 if (! gdbpy_current_objfile)
1426 return objfile_to_objfile_object (gdbpy_current_objfile).release ();
1429 /* Compute the list of active python type printers and store them in
1430 EXT_PRINTERS->py_type_printers. The product of this function is used by
1431 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1432 This is the extension_language_ops.start_type_printers "method". */
1435 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1436 struct ext_lang_type_printers *ext_printers)
1438 PyObject *printers_obj = NULL;
1440 if (!gdb_python_initialized)
1443 gdbpy_enter enter_py (get_current_arch (), current_language);
1445 gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1446 if (type_module == NULL)
1448 gdbpy_print_stack ();
1452 gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1453 "get_type_recognizers"));
1456 gdbpy_print_stack ();
1460 printers_obj = PyObject_CallFunctionObjArgs (func.get (), (char *) NULL);
1461 if (printers_obj == NULL)
1462 gdbpy_print_stack ();
1464 ext_printers->py_type_printers = printers_obj;
1467 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1468 a newly allocated string holding the type's replacement name, and return
1469 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1470 If there's a Python error return EXT_LANG_RC_ERROR.
1471 Otherwise, return EXT_LANG_RC_NOP.
1472 This is the extension_language_ops.apply_type_printers "method". */
1474 static enum ext_lang_rc
1475 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1476 const struct ext_lang_type_printers *ext_printers,
1477 struct type *type, char **prettied_type)
1479 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
1480 gdb::unique_xmalloc_ptr<char> result;
1482 if (printers_obj == NULL)
1483 return EXT_LANG_RC_NOP;
1485 if (!gdb_python_initialized)
1486 return EXT_LANG_RC_NOP;
1488 gdbpy_enter enter_py (get_current_arch (), current_language);
1490 gdbpy_ref<> type_obj (type_to_type_object (type));
1491 if (type_obj == NULL)
1493 gdbpy_print_stack ();
1494 return EXT_LANG_RC_ERROR;
1497 gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1498 if (type_module == NULL)
1500 gdbpy_print_stack ();
1501 return EXT_LANG_RC_ERROR;
1504 gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1505 "apply_type_recognizers"));
1508 gdbpy_print_stack ();
1509 return EXT_LANG_RC_ERROR;
1512 gdbpy_ref<> result_obj (PyObject_CallFunctionObjArgs (func.get (),
1516 if (result_obj == NULL)
1518 gdbpy_print_stack ();
1519 return EXT_LANG_RC_ERROR;
1522 if (result_obj == Py_None)
1523 return EXT_LANG_RC_NOP;
1525 result = python_string_to_host_string (result_obj.get ());
1528 gdbpy_print_stack ();
1529 return EXT_LANG_RC_ERROR;
1532 *prettied_type = result.release ();
1533 return EXT_LANG_RC_OK;
1536 /* Free the result of start_type_printers.
1537 This is the extension_language_ops.free_type_printers "method". */
1540 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1541 struct ext_lang_type_printers *ext_printers)
1543 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
1545 if (printers == NULL)
1548 if (!gdb_python_initialized)
1551 gdbpy_enter enter_py (get_current_arch (), current_language);
1552 Py_DECREF (printers);
1555 #else /* HAVE_PYTHON */
1557 /* Dummy implementation of the gdb "python-interactive" and "python"
1561 python_interactive_command (const char *arg, int from_tty)
1563 arg = skip_spaces (arg);
1565 error (_("Python scripting is not supported in this copy of GDB."));
1568 counted_command_line l = get_command_line (python_control, "");
1570 execute_control_command_untraced (l.get ());
1575 python_command (const char *arg, int from_tty)
1577 python_interactive_command (arg, from_tty);
1580 #endif /* HAVE_PYTHON */
1582 /* When this is turned on before Python is initialised then Python will
1583 ignore any environment variables related to Python. This is equivalent
1584 to passing `-E' to the python program. */
1585 static bool python_ignore_environment = false;
1587 /* Implement 'show python ignore-environment'. */
1590 show_python_ignore_environment (struct ui_file *file, int from_tty,
1591 struct cmd_list_element *c, const char *value)
1593 fprintf_filtered (file, _("Python's ignore-environment setting is %s.\n"),
1597 /* Implement 'set python ignore-environment'. This sets Python's internal
1598 flag no matter when the command is issued, however, if this is used
1599 after Py_Initialize has been called then most of the environment will
1600 already have been read. */
1603 set_python_ignore_environment (const char *args, int from_tty,
1604 struct cmd_list_element *c)
1607 Py_IgnoreEnvironmentFlag = python_ignore_environment ? 1 : 0;
1611 /* When this is turned on before Python is initialised then Python will
1612 not write `.pyc' files on import of a module. */
1613 static enum auto_boolean python_dont_write_bytecode = AUTO_BOOLEAN_AUTO;
1615 /* Implement 'show python dont-write-bytecode'. */
1618 show_python_dont_write_bytecode (struct ui_file *file, int from_tty,
1619 struct cmd_list_element *c, const char *value)
1621 if (python_dont_write_bytecode == AUTO_BOOLEAN_AUTO)
1623 const char *auto_string
1624 = (python_ignore_environment
1625 || getenv ("PYTHONDONTWRITEBYTECODE") == nullptr) ? "off" : "on";
1627 fprintf_filtered (file,
1628 _("Python's dont-write-bytecode setting is %s (currently %s).\n"),
1629 value, auto_string);
1632 fprintf_filtered (file, _("Python's dont-write-bytecode setting is %s.\n"),
1636 /* Implement 'set python dont-write-bytecode'. This sets Python's internal
1637 flag no matter when the command is issued, however, if this is used
1638 after Py_Initialize has been called then many modules could already
1639 have been imported and their byte code written out. */
1642 set_python_dont_write_bytecode (const char *args, int from_tty,
1643 struct cmd_list_element *c)
1646 if (python_dont_write_bytecode == AUTO_BOOLEAN_AUTO)
1647 Py_DontWriteBytecodeFlag
1648 = (!python_ignore_environment
1649 && getenv ("PYTHONDONTWRITEBYTECODE") != nullptr) ? 1 : 0;
1651 Py_DontWriteBytecodeFlag
1652 = python_dont_write_bytecode == AUTO_BOOLEAN_TRUE ? 1 : 0;
1653 #endif /* HAVE_PYTHON */
1658 /* Lists for 'set python' commands. */
1660 static struct cmd_list_element *user_set_python_list;
1661 static struct cmd_list_element *user_show_python_list;
1663 /* Initialize the Python code. */
1667 /* This is installed as a final cleanup and cleans up the
1668 interpreter. This lets Python's 'atexit' work. */
1671 finalize_python (void *ignore)
1673 struct active_ext_lang_state *previous_active;
1675 /* We don't use ensure_python_env here because if we ever ran the
1676 cleanup, gdb would crash -- because the cleanup calls into the
1677 Python interpreter, which we are about to destroy. It seems
1678 clearer to make the needed calls explicitly here than to create a
1679 cleanup and then mysteriously discard it. */
1681 /* This is only called as a final cleanup so we can assume the active
1682 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1683 previous_active = set_active_ext_lang (&extension_language_python);
1685 (void) PyGILState_Ensure ();
1686 python_gdbarch = target_gdbarch ();
1687 python_language = current_language;
1691 gdb_python_initialized = false;
1692 restore_active_ext_lang (previous_active);
1696 static struct PyModuleDef python_GdbModuleDef =
1698 PyModuleDef_HEAD_INIT,
1709 /* This is called via the PyImport_AppendInittab mechanism called
1710 during initialization, to make the built-in _gdb module known to
1712 PyMODINIT_FUNC init__gdb_module (void);
1714 init__gdb_module (void)
1716 return PyModule_Create (&python_GdbModuleDef);
1721 do_start_initialization ()
1723 #ifdef WITH_PYTHON_PATH
1724 /* Work around problem where python gets confused about where it is,
1725 and then can't find its libraries, etc.
1726 NOTE: Python assumes the following layout:
1728 /foo/lib/pythonX.Y/...
1729 This must be done before calling Py_Initialize. */
1730 gdb::unique_xmalloc_ptr<char> progname
1731 (concat (ldirname (python_libdir.c_str ()).c_str (), SLASH_STRING, "bin",
1732 SLASH_STRING, "python", (char *) NULL));
1734 /* Python documentation indicates that the memory given
1735 to Py_SetProgramName cannot be freed. However, it seems that
1736 at least Python 3.7.4 Py_SetProgramName takes a copy of the
1737 given program_name. Making progname_copy static and not release
1738 the memory avoids a leak report for Python versions that duplicate
1739 program_name, and respect the requirement of Py_SetProgramName
1740 for Python versions that do not duplicate program_name. */
1741 static wchar_t *progname_copy;
1743 std::string oldloc = setlocale (LC_ALL, NULL);
1744 setlocale (LC_ALL, "");
1745 size_t progsize = strlen (progname.get ());
1746 progname_copy = XNEWVEC (wchar_t, progsize + 1);
1747 size_t count = mbstowcs (progname_copy, progname.get (), progsize + 1);
1748 if (count == (size_t) -1)
1750 fprintf (stderr, "Could not convert python path to string\n");
1753 setlocale (LC_ALL, oldloc.c_str ());
1755 /* Note that Py_SetProgramName expects the string it is passed to
1756 remain alive for the duration of the program's execution, so
1757 it is not freed after this call. */
1758 Py_SetProgramName (progname_copy);
1760 /* Define _gdb as a built-in module. */
1761 PyImport_AppendInittab ("_gdb", init__gdb_module);
1763 Py_SetProgramName (progname.release ());
1768 #if PY_VERSION_HEX < 0x03090000
1769 /* PyEval_InitThreads became deprecated in Python 3.9 and will
1770 be removed in Python 3.11. Prior to Python 3.7, this call was
1771 required to initialize the GIL. */
1772 PyEval_InitThreads ();
1776 gdb_module = PyImport_ImportModule ("_gdb");
1778 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1780 if (gdb_module == NULL)
1783 if (PyModule_AddStringConstant (gdb_module, "VERSION", version) < 0
1784 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG", host_name) < 0
1785 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1789 /* Add stream constants. */
1790 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1791 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1792 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1795 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1796 if (gdbpy_gdb_error == NULL
1797 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1800 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1801 gdbpy_gdb_error, NULL);
1802 if (gdbpy_gdb_memory_error == NULL
1803 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1804 gdbpy_gdb_memory_error) < 0)
1807 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1808 if (gdbpy_gdberror_exc == NULL
1809 || gdb_pymodule_addobject (gdb_module, "GdbError",
1810 gdbpy_gdberror_exc) < 0)
1813 gdbpy_initialize_gdb_readline ();
1815 if (gdbpy_initialize_auto_load () < 0
1816 || gdbpy_initialize_values () < 0
1817 || gdbpy_initialize_frames () < 0
1818 || gdbpy_initialize_commands () < 0
1819 || gdbpy_initialize_instruction () < 0
1820 || gdbpy_initialize_record () < 0
1821 || gdbpy_initialize_btrace () < 0
1822 || gdbpy_initialize_symbols () < 0
1823 || gdbpy_initialize_symtabs () < 0
1824 || gdbpy_initialize_blocks () < 0
1825 || gdbpy_initialize_functions () < 0
1826 || gdbpy_initialize_parameters () < 0
1827 || gdbpy_initialize_types () < 0
1828 || gdbpy_initialize_pspace () < 0
1829 || gdbpy_initialize_objfile () < 0
1830 || gdbpy_initialize_breakpoints () < 0
1831 || gdbpy_initialize_finishbreakpoints () < 0
1832 || gdbpy_initialize_lazy_string () < 0
1833 || gdbpy_initialize_linetable () < 0
1834 || gdbpy_initialize_thread () < 0
1835 || gdbpy_initialize_inferior () < 0
1836 || gdbpy_initialize_eventregistry () < 0
1837 || gdbpy_initialize_py_events () < 0
1838 || gdbpy_initialize_event () < 0
1839 || gdbpy_initialize_arch () < 0
1840 || gdbpy_initialize_registers () < 0
1841 || gdbpy_initialize_xmethods () < 0
1842 || gdbpy_initialize_unwind () < 0
1843 || gdbpy_initialize_tui () < 0)
1846 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
1847 if (gdbpy_initialize_event_generic (&name##_event_object_type, py_name) < 0) \
1849 #include "py-event-types.def"
1850 #undef GDB_PY_DEFINE_EVENT_TYPE
1852 gdbpy_to_string_cst = PyString_FromString ("to_string");
1853 if (gdbpy_to_string_cst == NULL)
1855 gdbpy_children_cst = PyString_FromString ("children");
1856 if (gdbpy_children_cst == NULL)
1858 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1859 if (gdbpy_display_hint_cst == NULL)
1861 gdbpy_doc_cst = PyString_FromString ("__doc__");
1862 if (gdbpy_doc_cst == NULL)
1864 gdbpy_enabled_cst = PyString_FromString ("enabled");
1865 if (gdbpy_enabled_cst == NULL)
1867 gdbpy_value_cst = PyString_FromString ("value");
1868 if (gdbpy_value_cst == NULL)
1871 /* Release the GIL while gdb runs. */
1872 PyEval_SaveThread ();
1874 make_final_cleanup (finalize_python, NULL);
1876 /* Only set this when initialization has succeeded. */
1877 gdb_python_initialized = 1;
1882 namespace selftests {
1884 /* Entry point for python unit tests. */
1889 #define CMD execute_command_to_string ("python print(5)", 0, true);
1894 SELF_CHECK (output == "5\n");
1897 bool saw_exception = false;
1898 scoped_restore reset_gdb_python_initialized
1899 = make_scoped_restore (&gdb_python_initialized, 0);
1904 catch (const gdb_exception &e)
1906 saw_exception = true;
1907 SELF_CHECK (e.reason == RETURN_ERROR);
1908 SELF_CHECK (e.error == GENERIC_ERROR);
1909 SELF_CHECK (*e.message == "Python not initialized");
1911 SELF_CHECK (saw_exception);
1912 SELF_CHECK (output.empty ());
1919 } // namespace selftests
1920 #endif /* GDB_SELF_TEST */
1922 #endif /* HAVE_PYTHON */
1925 cmd_list_element *python_cmd_element = nullptr;
1927 void _initialize_python ();
1929 _initialize_python ()
1931 cmd_list_element *python_interactive_cmd
1932 = add_com ("python-interactive", class_obscure,
1933 python_interactive_command,
1936 Start an interactive Python prompt.\n\
1938 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1941 Alternatively, a single-line Python command can be given as an\n\
1942 argument, and if the command is an expression, the result will be\n\
1943 printed. For example:\n\
1945 (gdb) python-interactive 2 + 3\n\
1947 #else /* HAVE_PYTHON */
1949 Start a Python interactive prompt.\n\
1951 Python scripting is not supported in this copy of GDB.\n\
1952 This command is only a placeholder.")
1953 #endif /* HAVE_PYTHON */
1955 add_com_alias ("pi", python_interactive_cmd, class_obscure, 1);
1957 python_cmd_element = add_com ("python", class_obscure, python_command,
1960 Evaluate a Python command.\n\
1962 The command can be given as an argument, for instance:\n\
1964 python print (23)\n\
1966 If no argument is given, the following lines are read and used\n\
1967 as the Python commands. Type a line containing \"end\" to indicate\n\
1968 the end of the command.")
1969 #else /* HAVE_PYTHON */
1971 Evaluate a Python command.\n\
1973 Python scripting is not supported in this copy of GDB.\n\
1974 This command is only a placeholder.")
1975 #endif /* HAVE_PYTHON */
1977 add_com_alias ("py", python_cmd_element, class_obscure, 1);
1979 /* Add set/show python print-stack. */
1980 add_basic_prefix_cmd ("python", no_class,
1981 _("Prefix command for python preference settings."),
1982 &user_show_python_list, 0, &showlist);
1984 add_show_prefix_cmd ("python", no_class,
1985 _("Prefix command for python preference settings."),
1986 &user_set_python_list, 0, &setlist);
1988 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1989 &gdbpy_should_print_stack, _("\
1990 Set mode for Python stack dump on error."), _("\
1991 Show the mode of Python stack printing on error."), _("\
1992 none == no stack or message will be printed.\n\
1993 full == a message and a stack will be printed.\n\
1994 message == an error message without a stack will be printed."),
1996 &user_set_python_list,
1997 &user_show_python_list);
1999 add_setshow_boolean_cmd ("ignore-environment", no_class,
2000 &python_ignore_environment, _("\
2001 Set whether the Python interpreter should ignore environment variables."), _(" \
2002 Show whether the Python interpreter showlist ignore environment variables."), _(" \
2003 When enabled GDB's Python interpreter will ignore any Python related\n \
2004 flags in the environment. This is equivalent to passing `-E' to a\n \
2005 python executable."),
2006 set_python_ignore_environment,
2007 show_python_ignore_environment,
2008 &user_set_python_list,
2009 &user_show_python_list);
2011 add_setshow_auto_boolean_cmd ("dont-write-bytecode", no_class,
2012 &python_dont_write_bytecode, _("\
2013 Set whether the Python interpreter should ignore environment variables."), _(" \
2014 Show whether the Python interpreter showlist ignore environment variables."), _(" \
2015 When enabled GDB's Python interpreter will ignore any Python related\n \
2016 flags in the environment. This is equivalent to passing `-E' to a\n \
2017 python executable."),
2018 set_python_dont_write_bytecode,
2019 show_python_dont_write_bytecode,
2020 &user_set_python_list,
2021 &user_show_python_list);
2025 selftests::register_test ("python", selftests::test_python);
2026 #endif /* GDB_SELF_TEST */
2027 #endif /* HAVE_PYTHON */
2032 /* Helper function for gdbpy_initialize. This does the work and then
2033 returns false if an error has occurred and must be displayed, or true on
2037 do_initialize (const struct extension_language_defn *extlang)
2042 /* Add the initial data-directory to sys.path. */
2044 std::string gdb_pythondir = (std::string (gdb_datadir) + SLASH_STRING
2047 sys_path = PySys_GetObject ("path");
2049 /* If sys.path is not defined yet, define it first. */
2050 if (!(sys_path && PyList_Check (sys_path)))
2053 PySys_SetPath (L"");
2057 sys_path = PySys_GetObject ("path");
2059 if (sys_path && PyList_Check (sys_path))
2061 gdbpy_ref<> pythondir (PyString_FromString (gdb_pythondir.c_str ()));
2062 if (pythondir == NULL || PyList_Insert (sys_path, 0, pythondir.get ()))
2068 /* Import the gdb module to finish the initialization, and
2069 add it to __main__ for convenience. */
2070 m = PyImport_AddModule ("__main__");
2074 /* Keep the reference to gdb_python_module since it is in a global
2076 gdb_python_module = PyImport_ImportModule ("gdb");
2077 if (gdb_python_module == NULL)
2079 gdbpy_print_stack ();
2080 /* This is passed in one call to warning so that blank lines aren't
2081 inserted between each line of text. */
2083 "Could not load the Python gdb module from `%s'.\n"
2084 "Limited Python support is available from the _gdb module.\n"
2085 "Suggest passing --data-directory=/path/to/gdb/data-directory."),
2086 gdb_pythondir.c_str ());
2087 /* We return "success" here as we've already emitted the
2092 return gdb_pymodule_addobject (m, "gdb", gdb_python_module) >= 0;
2095 /* Perform Python initialization. This will be called after GDB has
2096 performed all of its own initialization. This is the
2097 extension_language_ops.initialize "method". */
2100 gdbpy_initialize (const struct extension_language_defn *extlang)
2102 if (!do_start_initialization () && PyErr_Occurred ())
2103 gdbpy_print_stack ();
2105 gdbpy_enter enter_py (get_current_arch (), current_language);
2107 if (!do_initialize (extlang))
2109 gdbpy_print_stack ();
2110 warning (_("internal error: Unhandled Python exception"));
2114 /* Return non-zero if Python has successfully initialized.
2115 This is the extension_languages_ops.initialized "method". */
2118 gdbpy_initialized (const struct extension_language_defn *extlang)
2120 return gdb_python_initialized;
2123 PyMethodDef python_GdbMethods[] =
2125 { "history", gdbpy_history, METH_VARARGS,
2126 "Get a value from history" },
2127 { "add_history", gdbpy_add_history, METH_VARARGS,
2128 "Add a value to the value history list" },
2129 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
2130 "execute (command [, from_tty] [, to_string]) -> [String]\n\
2131 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
2132 a Python String containing the output of the command if to_string is\n\
2134 { "parameter", gdbpy_parameter, METH_VARARGS,
2135 "Return a gdb parameter's value" },
2137 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
2138 "Return a tuple of all breakpoint objects" },
2140 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
2141 "Find the default visualizer for a Value." },
2143 { "progspaces", gdbpy_progspaces, METH_NOARGS,
2144 "Return a sequence of all progspaces." },
2146 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
2147 "Return the current Objfile being loaded, or None." },
2149 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
2150 "newest_frame () -> gdb.Frame.\n\
2151 Return the newest frame object." },
2152 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
2153 "selected_frame () -> gdb.Frame.\n\
2154 Return the selected frame object." },
2155 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
2156 "stop_reason_string (Integer) -> String.\n\
2157 Return a string explaining unwind stop reason." },
2159 { "start_recording", gdbpy_start_recording, METH_VARARGS,
2160 "start_recording ([method] [, format]) -> gdb.Record.\n\
2161 Start recording with the given method. If no method is given, will fall back\n\
2162 to the system default method. If no format is given, will fall back to the\n\
2163 default format for the given method."},
2164 { "current_recording", gdbpy_current_recording, METH_NOARGS,
2165 "current_recording () -> gdb.Record.\n\
2166 Return current recording object." },
2167 { "stop_recording", gdbpy_stop_recording, METH_NOARGS,
2168 "stop_recording () -> None.\n\
2169 Stop current recording." },
2171 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
2172 METH_VARARGS | METH_KEYWORDS,
2173 "lookup_type (name [, block]) -> type\n\
2174 Return a Type corresponding to the given name." },
2175 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
2176 METH_VARARGS | METH_KEYWORDS,
2177 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
2178 Return a tuple with the symbol corresponding to the given name (or None) and\n\
2179 a boolean indicating if name is a field of the current implied argument\n\
2180 `this' (when the current language is object-oriented)." },
2181 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
2182 METH_VARARGS | METH_KEYWORDS,
2183 "lookup_global_symbol (name [, domain]) -> symbol\n\
2184 Return the symbol corresponding to the given name (or None)." },
2185 { "lookup_static_symbol", (PyCFunction) gdbpy_lookup_static_symbol,
2186 METH_VARARGS | METH_KEYWORDS,
2187 "lookup_static_symbol (name [, domain]) -> symbol\n\
2188 Return the static-linkage symbol corresponding to the given name (or None)." },
2189 { "lookup_static_symbols", (PyCFunction) gdbpy_lookup_static_symbols,
2190 METH_VARARGS | METH_KEYWORDS,
2191 "lookup_static_symbols (name [, domain]) -> symbol\n\
2192 Return a list of all static-linkage symbols corresponding to the given name." },
2194 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
2195 METH_VARARGS | METH_KEYWORDS,
2196 "lookup_objfile (name, [by_build_id]) -> objfile\n\
2197 Look up the specified objfile.\n\
2198 If by_build_id is True, the objfile is looked up by using name\n\
2199 as its build id." },
2201 { "decode_line", gdbpy_decode_line, METH_VARARGS,
2202 "decode_line (String) -> Tuple. Decode a string argument the way\n\
2203 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
2204 The first element contains any unparsed portion of the String parameter\n\
2205 (or None if the string was fully parsed). The second element contains\n\
2206 a tuple that contains all the locations that match, represented as\n\
2207 gdb.Symtab_and_line objects (or None)."},
2208 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
2209 "parse_and_eval (String) -> Value.\n\
2210 Parse String as an expression, evaluate it, and return the result as a Value."
2213 { "post_event", gdbpy_post_event, METH_VARARGS,
2214 "Post an event into gdb's event loop." },
2216 { "target_charset", gdbpy_target_charset, METH_NOARGS,
2217 "target_charset () -> string.\n\
2218 Return the name of the current target charset." },
2219 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2220 "target_wide_charset () -> string.\n\
2221 Return the name of the current target wide charset." },
2222 { "rbreak", (PyCFunction) gdbpy_rbreak, METH_VARARGS | METH_KEYWORDS,
2223 "rbreak (Regex) -> List.\n\
2224 Return a Tuple containing gdb.Breakpoint objects that match the given Regex." },
2225 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2226 "string_to_argv (String) -> Array.\n\
2227 Parse String and return an argv-like array.\n\
2228 Arguments are separate by spaces and may be quoted."
2230 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2231 "Write a string using gdb's filtered stream." },
2232 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2233 "Flush gdb's filtered stdout stream." },
2234 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2235 "selected_thread () -> gdb.InferiorThread.\n\
2236 Return the selected thread object." },
2237 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2238 "selected_inferior () -> gdb.Inferior.\n\
2239 Return the selected inferior object." },
2240 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2241 "inferiors () -> (gdb.Inferior, ...).\n\
2242 Return a tuple containing all inferiors." },
2244 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2245 "invalidate_cached_frames () -> None.\n\
2246 Invalidate any cached frame objects in gdb.\n\
2247 Intended for internal use only." },
2249 { "convenience_variable", gdbpy_convenience_variable, METH_VARARGS,
2250 "convenience_variable (NAME) -> value.\n\
2251 Return the value of the convenience variable $NAME,\n\
2252 or None if not set." },
2253 { "set_convenience_variable", gdbpy_set_convenience_variable, METH_VARARGS,
2254 "convenience_variable (NAME, VALUE) -> None.\n\
2255 Set the value of the convenience variable $NAME." },
2258 { "register_window_type", (PyCFunction) gdbpy_register_tui_window,
2259 METH_VARARGS | METH_KEYWORDS,
2260 "register_window_type (NAME, CONSTRUCSTOR) -> None\n\
2261 Register a TUI window constructor." },
2264 {NULL, NULL, 0, NULL}
2267 /* Define all the event objects. */
2268 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
2269 PyTypeObject name##_event_object_type \
2270 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
2272 PyVarObject_HEAD_INIT (NULL, 0) \
2273 "gdb." py_name, /* tp_name */ \
2274 sizeof (event_object), /* tp_basicsize */ \
2275 0, /* tp_itemsize */ \
2276 evpy_dealloc, /* tp_dealloc */ \
2278 0, /* tp_getattr */ \
2279 0, /* tp_setattr */ \
2280 0, /* tp_compare */ \
2282 0, /* tp_as_number */ \
2283 0, /* tp_as_sequence */ \
2284 0, /* tp_as_mapping */ \
2288 0, /* tp_getattro */ \
2289 0, /* tp_setattro */ \
2290 0, /* tp_as_buffer */ \
2291 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ \
2293 0, /* tp_traverse */ \
2295 0, /* tp_richcompare */ \
2296 0, /* tp_weaklistoffset */ \
2298 0, /* tp_iternext */ \
2299 0, /* tp_methods */ \
2300 0, /* tp_members */ \
2301 0, /* tp_getset */ \
2302 &base, /* tp_base */ \
2304 0, /* tp_descr_get */ \
2305 0, /* tp_descr_set */ \
2306 0, /* tp_dictoffset */ \
2310 #include "py-event-types.def"
2311 #undef GDB_PY_DEFINE_EVENT_TYPE
2313 #endif /* HAVE_PYTHON */