1 /* General python/gdb code
3 Copyright (C) 2008-2022 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"
39 #include "observable.h"
41 /* Declared constants and enum for python stack printing. */
42 static const char python_excp_none[] = "none";
43 static const char python_excp_full[] = "full";
44 static const char python_excp_message[] = "message";
46 /* "set python print-stack" choices. */
47 static const char *const python_excp_enums[] =
55 /* The exception printing variable. 'full' if we want to print the
56 error message and stack, 'none' if we want to print nothing, and
57 'message' if we only want to print the error message. 'message' is
59 static const char *gdbpy_should_print_stack = python_excp_message;
64 #include "cli/cli-decode.h"
67 #include "python-internal.h"
70 #include "gdbsupport/version.h"
72 #include "gdbthread.h"
74 #include "event-top.h"
77 /* True if Python has been successfully initialized, false
80 int gdb_python_initialized;
82 extern PyMethodDef python_GdbMethods[];
85 PyObject *gdb_python_module;
87 /* Some string constants we may wish to use. */
88 PyObject *gdbpy_to_string_cst;
89 PyObject *gdbpy_children_cst;
90 PyObject *gdbpy_display_hint_cst;
91 PyObject *gdbpy_doc_cst;
92 PyObject *gdbpy_enabled_cst;
93 PyObject *gdbpy_value_cst;
95 /* The GdbError exception. */
96 PyObject *gdbpy_gdberror_exc;
98 /* The `gdb.error' base class. */
99 PyObject *gdbpy_gdb_error;
101 /* The `gdb.MemoryError' exception. */
102 PyObject *gdbpy_gdb_memory_error;
104 static script_sourcer_func gdbpy_source_script;
105 static objfile_script_sourcer_func gdbpy_source_objfile_script;
106 static objfile_script_executor_func gdbpy_execute_objfile_script;
107 static void gdbpy_initialize (const struct extension_language_defn *);
108 static int gdbpy_initialized (const struct extension_language_defn *);
109 static void gdbpy_eval_from_control_command
110 (const struct extension_language_defn *, struct command_line *cmd);
111 static void gdbpy_start_type_printers (const struct extension_language_defn *,
112 struct ext_lang_type_printers *);
113 static enum ext_lang_rc gdbpy_apply_type_printers
114 (const struct extension_language_defn *,
115 const struct ext_lang_type_printers *, struct type *, char **);
116 static void gdbpy_free_type_printers (const struct extension_language_defn *,
117 struct ext_lang_type_printers *);
118 static void gdbpy_set_quit_flag (const struct extension_language_defn *);
119 static int gdbpy_check_quit_flag (const struct extension_language_defn *);
120 static enum ext_lang_rc gdbpy_before_prompt_hook
121 (const struct extension_language_defn *, const char *current_gdb_prompt);
122 static gdb::optional<std::string> gdbpy_colorize
123 (const std::string &filename, const std::string &contents);
125 /* The interface between gdb proper and loading of python scripts. */
127 static const struct extension_language_script_ops python_extension_script_ops =
130 gdbpy_source_objfile_script,
131 gdbpy_execute_objfile_script,
132 gdbpy_auto_load_enabled
135 /* The interface between gdb proper and python extensions. */
137 static const struct extension_language_ops python_extension_ops =
142 gdbpy_eval_from_control_command,
144 gdbpy_start_type_printers,
145 gdbpy_apply_type_printers,
146 gdbpy_free_type_printers,
148 gdbpy_apply_val_pretty_printer,
150 gdbpy_apply_frame_filter,
152 gdbpy_preserve_values,
154 gdbpy_breakpoint_has_cond,
155 gdbpy_breakpoint_cond_says_stop,
158 gdbpy_check_quit_flag,
160 gdbpy_before_prompt_hook,
162 gdbpy_get_matching_xmethod_workers,
167 #endif /* HAVE_PYTHON */
169 /* The main struct describing GDB's interface to the Python
170 extension language. */
171 const struct extension_language_defn extension_language_python =
183 &python_extension_script_ops,
184 &python_extension_ops
193 /* Architecture and language to be used in callbacks from
194 the Python interpreter. */
195 struct gdbarch *gdbpy_enter::python_gdbarch;
197 gdbpy_enter::gdbpy_enter (struct gdbarch *gdbarch,
198 const struct language_defn *language)
199 : m_gdbarch (python_gdbarch),
200 m_language (language == nullptr ? nullptr : current_language)
202 /* We should not ever enter Python unless initialized. */
203 if (!gdb_python_initialized)
204 error (_("Python not initialized"));
206 m_previous_active = set_active_ext_lang (&extension_language_python);
208 m_state = PyGILState_Ensure ();
210 python_gdbarch = gdbarch;
211 if (language != nullptr)
212 set_language (language->la_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 if (m_language != nullptr)
232 set_language (m_language->la_language);
234 restore_active_ext_lang (m_previous_active);
235 PyGILState_Release (m_state);
239 gdbpy_enter::get_gdbarch ()
241 if (python_gdbarch != nullptr)
242 return python_gdbarch;
243 return get_current_arch ();
247 gdbpy_enter::finalize ()
249 python_gdbarch = target_gdbarch ();
252 /* A helper class to save and restore the GIL, but without touching
253 the other globals that are handled by gdbpy_enter. */
260 : m_state (PyGILState_Ensure ())
266 PyGILState_Release (m_state);
269 DISABLE_COPY_AND_ASSIGN (gdbpy_gil);
273 PyGILState_STATE m_state;
276 /* Set the quit flag. */
279 gdbpy_set_quit_flag (const struct extension_language_defn *extlang)
281 PyErr_SetInterrupt ();
284 /* Return true if the quit flag has been set, false otherwise. */
287 gdbpy_check_quit_flag (const struct extension_language_defn *extlang)
289 if (!gdb_python_initialized)
293 return PyOS_InterruptOccurred ();
296 /* Evaluate a Python command like PyRun_SimpleString, but uses
297 Py_single_input which prints the result of expressions, and does
298 not automatically print the stack on errors. */
301 eval_python_command (const char *command)
305 m = PyImport_AddModule ("__main__");
309 d = PyModule_GetDict (m);
312 gdbpy_ref<> v (PyRun_StringFlags (command, Py_single_input, d, d, NULL));
324 /* Implementation of the gdb "python-interactive" command. */
327 python_interactive_command (const char *arg, int from_tty)
329 struct ui *ui = current_ui;
332 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
334 arg = skip_spaces (arg);
336 gdbpy_enter enter_py;
340 std::string script = std::string (arg) + "\n";
341 err = eval_python_command (script.c_str ());
345 err = PyRun_InteractiveLoop (ui->instream, "<stdin>");
351 gdbpy_print_stack ();
352 error (_("Error while executing Python code."));
356 /* A wrapper around PyRun_SimpleFile. FILE is the Python script to run
359 On Windows hosts few users would build Python themselves (this is no
360 trivial task on this platform), and thus use binaries built by
361 someone else instead. There may happen situation where the Python
362 library and GDB are using two different versions of the C runtime
363 library. Python, being built with VC, would use one version of the
364 msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
365 A FILE * from one runtime does not necessarily operate correctly in
368 To work around this potential issue, we run code in Python to load
372 python_run_simple_file (FILE *file, const char *filename)
376 PyRun_SimpleFile (file, filename);
380 /* Because we have a string for a filename, and are using Python to
381 open the file, we need to expand any tilde in the path first. */
382 gdb::unique_xmalloc_ptr<char> full_path (tilde_expand (filename));
384 if (gdb_python_module == nullptr
385 || ! PyObject_HasAttrString (gdb_python_module, "_execute_file"))
386 error (_("Installation error: gdb._execute_file function is missing"));
388 gdbpy_ref<> return_value
389 (PyObject_CallMethod (gdb_python_module, "_execute_file", "s",
391 if (return_value == nullptr)
393 /* Use PyErr_PrintEx instead of gdbpy_print_stack to better match the
394 behavior of the non-Windows codepath. */
401 /* Given a command_line, return a command string suitable for passing
402 to Python. Lines in the string are separated by newlines. */
405 compute_python_string (struct command_line *l)
407 struct command_line *iter;
410 for (iter = l; iter; iter = iter->next)
412 script += iter->line;
418 /* Take a command line structure representing a 'python' command, and
419 evaluate its body using the Python interpreter. */
422 gdbpy_eval_from_control_command (const struct extension_language_defn *extlang,
423 struct command_line *cmd)
427 if (cmd->body_list_1 != nullptr)
428 error (_("Invalid \"python\" block structure."));
430 gdbpy_enter enter_py;
432 std::string script = compute_python_string (cmd->body_list_0.get ());
433 ret = PyRun_SimpleString (script.c_str ());
435 error (_("Error while executing Python code."));
438 /* Implementation of the gdb "python" command. */
441 python_command (const char *arg, int from_tty)
443 gdbpy_enter enter_py;
445 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
447 arg = skip_spaces (arg);
450 if (PyRun_SimpleString (arg))
451 error (_("Error while executing Python code."));
455 counted_command_line l = get_command_line (python_control, "");
457 execute_control_command_untraced (l.get ());
463 /* Transform a gdb parameters's value into a Python value. May return
464 NULL (and set a Python exception) on error. Helper function for
467 gdbpy_parameter_value (const setting &var)
472 case var_string_noescape:
473 case var_optional_filename:
478 if (var.type () == var_enum)
479 str = var.get<const char *> ();
481 str = var.get<std::string> ().c_str ();
483 return host_string_to_python_string (str).release ();
488 if (var.get<bool> ())
494 case var_auto_boolean:
496 enum auto_boolean ab = var.get<enum auto_boolean> ();
498 if (ab == AUTO_BOOLEAN_TRUE)
500 else if (ab == AUTO_BOOLEAN_FALSE)
507 if (var.get<int> () == INT_MAX)
511 case var_zuinteger_unlimited:
512 return gdb_py_object_from_longest (var.get<int> ()).release ();
516 unsigned int val = var.get<unsigned int> ();
520 return gdb_py_object_from_ulongest (val).release ();
525 unsigned int val = var.get<unsigned int> ();
526 return gdb_py_object_from_ulongest (val).release ();
530 return PyErr_Format (PyExc_RuntimeError,
531 _("Programmer error: unhandled type."));
534 /* A Python function which returns a gdb parameter's value as a Python
538 gdbpy_parameter (PyObject *self, PyObject *args)
540 struct cmd_list_element *alias, *prefix, *cmd;
544 if (! PyArg_ParseTuple (args, "s", &arg))
547 std::string newarg = std::string ("show ") + arg;
551 found = lookup_cmd_composition (newarg.c_str (), &alias, &prefix, &cmd);
553 catch (const gdb_exception &ex)
555 GDB_PY_HANDLE_EXCEPTION (ex);
559 return PyErr_Format (PyExc_RuntimeError,
560 _("Could not find parameter `%s'."), arg);
562 if (!cmd->var.has_value ())
563 return PyErr_Format (PyExc_RuntimeError,
564 _("`%s' is not a parameter."), arg);
566 return gdbpy_parameter_value (*cmd->var);
569 /* Wrapper for target_charset. */
572 gdbpy_target_charset (PyObject *self, PyObject *args)
574 const char *cset = target_charset (gdbpy_enter::get_gdbarch ());
576 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
579 /* Wrapper for target_wide_charset. */
582 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
584 const char *cset = target_wide_charset (gdbpy_enter::get_gdbarch ());
586 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
589 /* Implement gdb.host_charset(). */
592 gdbpy_host_charset (PyObject *self, PyObject *args)
594 const char *cset = host_charset ();
596 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
599 /* A Python function which evaluates a string using the gdb CLI. */
602 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
605 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
606 int from_tty, to_string;
607 static const char *keywords[] = { "command", "from_tty", "to_string", NULL };
609 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
610 &PyBool_Type, &from_tty_obj,
611 &PyBool_Type, &to_string_obj))
617 int cmp = PyObject_IsTrue (from_tty_obj);
626 int cmp = PyObject_IsTrue (to_string_obj);
632 std::string to_string_res;
634 scoped_restore preventer = prevent_dont_repeat ();
638 gdbpy_allow_threads allow_threads;
640 struct interp *interp;
642 std::string arg_copy = arg;
644 char *save_ptr = nullptr;
648 const char *result = strtok_r (first ? &arg_copy[0] : nullptr,
654 counted_command_line lines = read_command_lines_1 (reader, 1, nullptr);
657 scoped_restore save_async = make_scoped_restore (¤t_ui->async,
660 scoped_restore save_uiout = make_scoped_restore (¤t_uiout);
662 /* Use the console interpreter uiout to have the same print format
663 for console or MI. */
664 interp = interp_lookup (current_ui, "console");
665 current_uiout = interp->interp_ui_out ();
668 to_string_res = execute_control_commands_to_string (lines.get (),
671 execute_control_commands (lines.get (), from_tty);
674 /* Do any commands attached to breakpoint we stopped at. */
675 bpstat_do_actions ();
677 catch (const gdb_exception &except)
679 /* If an exception occurred then we won't hit normal_stop (), or have
680 an exception reach the top level of the event loop, which are the
681 two usual places in which stdin would be re-enabled. So, before we
682 convert the exception and continue back in Python, we should
683 re-enable stdin here. */
684 async_enable_stdin ();
685 GDB_PY_HANDLE_EXCEPTION (except);
689 return PyString_FromString (to_string_res.c_str ());
693 /* Implementation of Python rbreak command. Take a REGEX and
694 optionally a MINSYMS, THROTTLE and SYMTABS keyword and return a
695 Python list that contains newly set breakpoints that match that
696 criteria. REGEX refers to a GDB format standard regex pattern of
697 symbols names to search; MINSYMS is an optional boolean (default
698 False) that indicates if the function should search GDB's minimal
699 symbols; THROTTLE is an optional integer (default unlimited) that
700 indicates the maximum amount of breakpoints allowable before the
701 function exits (note, if the throttle bound is passed, no
702 breakpoints will be set and a runtime error returned); SYMTABS is
703 an optional Python iterable that contains a set of gdb.Symtabs to
704 constrain the search within. */
707 gdbpy_rbreak (PyObject *self, PyObject *args, PyObject *kw)
710 std::vector<symbol_search> symbols;
711 unsigned long count = 0;
712 PyObject *symtab_list = NULL;
713 PyObject *minsyms_p_obj = NULL;
715 unsigned int throttle = 0;
716 static const char *keywords[] = {"regex","minsyms", "throttle",
719 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|O!IO", keywords,
720 ®ex, &PyBool_Type,
721 &minsyms_p_obj, &throttle,
725 /* Parse minsyms keyword. */
726 if (minsyms_p_obj != NULL)
728 int cmp = PyObject_IsTrue (minsyms_p_obj);
734 global_symbol_searcher spec (FUNCTIONS_DOMAIN, regex);
736 for (const char *elem : spec.filenames)
737 xfree ((void *) elem);
740 /* The "symtabs" keyword is any Python iterable object that returns
741 a gdb.Symtab on each iteration. If specified, iterate through
742 the provided gdb.Symtabs and extract their full path. As
743 python_string_to_target_string returns a
744 gdb::unique_xmalloc_ptr<char> and a vector containing these types
745 cannot be coerced to a const char **p[] via the vector.data call,
746 release the value from the unique_xmalloc_ptr and place it in a
747 simple type symtab_list_type (which holds the vector and a
748 destructor that frees the contents of the allocated strings. */
749 if (symtab_list != NULL)
751 gdbpy_ref<> iter (PyObject_GetIter (symtab_list));
758 gdbpy_ref<> next (PyIter_Next (iter.get ()));
762 if (PyErr_Occurred ())
767 gdbpy_ref<> obj_name (PyObject_GetAttrString (next.get (),
770 if (obj_name == NULL)
773 /* Is the object file still valid? */
774 if (obj_name == Py_None)
777 gdb::unique_xmalloc_ptr<char> filename =
778 python_string_to_target_string (obj_name.get ());
780 if (filename == NULL)
783 /* Make sure there is a definite place to store the value of
784 filename before it is released. */
785 spec.filenames.push_back (nullptr);
786 spec.filenames.back () = filename.release ();
790 /* The search spec. */
791 symbols = spec.search ();
793 /* Count the number of symbols (both symbols and optionally minimal
794 symbols) so we can correctly check the throttle limit. */
795 for (const symbol_search &p : symbols)
797 /* Minimal symbols included? */
800 if (p.msymbol.minsym != NULL)
804 if (p.symbol != NULL)
808 /* Check throttle bounds and exit if in excess. */
809 if (throttle != 0 && count > throttle)
811 PyErr_SetString (PyExc_RuntimeError,
812 _("Number of breakpoints exceeds throttled maximum."));
816 gdbpy_ref<> return_list (PyList_New (0));
818 if (return_list == NULL)
821 /* Construct full path names for symbols and call the Python
822 breakpoint constructor on the resulting names. Be tolerant of
823 individual breakpoint failures. */
824 for (const symbol_search &p : symbols)
826 std::string symbol_name;
828 /* Skipping minimal symbols? */
830 if (p.msymbol.minsym != NULL)
833 if (p.msymbol.minsym == NULL)
835 struct symtab *symtab = symbol_symtab (p.symbol);
836 const char *fullname = symtab_to_fullname (symtab);
838 symbol_name = fullname;
840 symbol_name += p.symbol->linkage_name ();
843 symbol_name = p.msymbol.minsym->linkage_name ();
845 gdbpy_ref<> argList (Py_BuildValue("(s)", symbol_name.c_str ()));
846 gdbpy_ref<> obj (PyObject_CallObject ((PyObject *)
847 &breakpoint_object_type,
850 /* Tolerate individual breakpoint failures. */
852 gdbpy_print_stack ();
855 if (PyList_Append (return_list.get (), obj.get ()) == -1)
859 return return_list.release ();
862 /* A Python function which is a wrapper for decode_line_1. */
865 gdbpy_decode_line (PyObject *self, PyObject *args)
867 const char *arg = NULL;
869 gdbpy_ref<> unparsed;
870 event_location_up location;
872 if (! PyArg_ParseTuple (args, "|s", &arg))
875 /* Treat a string consisting of just whitespace the same as
879 arg = skip_spaces (arg);
885 location = string_to_event_location_basic (&arg, current_language,
886 symbol_name_match_type::WILD);
888 std::vector<symtab_and_line> decoded_sals;
889 symtab_and_line def_sal;
890 gdb::array_view<symtab_and_line> sals;
893 if (location != NULL)
895 decoded_sals = decode_line_1 (location.get (), 0, NULL, NULL, 0);
900 set_default_source_symtab_and_line ();
901 def_sal = get_current_source_symtab_and_line ();
905 catch (const gdb_exception &ex)
907 /* We know this will always throw. */
908 gdbpy_convert_exception (ex);
914 result.reset (PyTuple_New (sals.size ()));
917 for (size_t i = 0; i < sals.size (); ++i)
919 PyObject *obj = symtab_and_line_to_sal_object (sals[i]);
923 PyTuple_SetItem (result.get (), i, obj);
927 result = gdbpy_ref<>::new_reference (Py_None);
929 gdbpy_ref<> return_result (PyTuple_New (2));
930 if (return_result == NULL)
933 if (arg != NULL && strlen (arg) > 0)
935 unparsed.reset (PyString_FromString (arg));
936 if (unparsed == NULL)
940 unparsed = gdbpy_ref<>::new_reference (Py_None);
942 PyTuple_SetItem (return_result.get (), 0, unparsed.release ());
943 PyTuple_SetItem (return_result.get (), 1, result.release ());
945 return return_result.release ();
948 /* Parse a string and evaluate it as an expression. */
950 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
952 const char *expr_str;
953 struct value *result = NULL;
955 if (!PyArg_ParseTuple (args, "s", &expr_str))
960 gdbpy_allow_threads allow_threads;
961 result = parse_and_eval (expr_str);
963 catch (const gdb_exception &except)
965 GDB_PY_HANDLE_EXCEPTION (except);
968 return value_to_value_object (result);
971 /* Implementation of gdb.invalidate_cached_frames. */
974 gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args)
976 reinit_frame_cache ();
980 /* Read a file as Python code.
981 This is the extension_language_script_ops.script_sourcer "method".
982 FILE is the file to load. FILENAME is name of the file FILE.
983 This does not throw any errors. If an exception occurs python will print
984 the traceback and clear the error indicator. */
987 gdbpy_source_script (const struct extension_language_defn *extlang,
988 FILE *file, const char *filename)
990 gdbpy_enter enter_py;
991 python_run_simple_file (file, filename);
996 /* Posting and handling events. */
998 /* A single event. */
1001 gdbpy_event (gdbpy_ref<> &&func)
1002 : m_func (func.release ())
1006 gdbpy_event (gdbpy_event &&other) noexcept
1007 : m_func (other.m_func)
1009 other.m_func = nullptr;
1012 gdbpy_event (const gdbpy_event &other)
1013 : m_func (other.m_func)
1016 Py_XINCREF (m_func);
1022 Py_XDECREF (m_func);
1025 gdbpy_event &operator= (const gdbpy_event &other) = delete;
1029 gdbpy_enter enter_py;
1031 gdbpy_ref<> call_result (PyObject_CallObject (m_func, NULL));
1032 if (call_result == NULL)
1033 gdbpy_print_stack ();
1038 /* The Python event. This is just a callable object. Note that
1039 this is not a gdbpy_ref<>, because we have to take particular
1040 care to only destroy the reference when holding the GIL. */
1044 /* Submit an event to the gdb thread. */
1046 gdbpy_post_event (PyObject *self, PyObject *args)
1050 if (!PyArg_ParseTuple (args, "O", &func))
1053 if (!PyCallable_Check (func))
1055 PyErr_SetString (PyExc_RuntimeError,
1056 _("Posted event is not callable"));
1060 gdbpy_ref<> func_ref = gdbpy_ref<>::new_reference (func);
1061 gdbpy_event event (std::move (func_ref));
1062 run_on_main_thread (event);
1069 /* This is the extension_language_ops.before_prompt "method". */
1071 static enum ext_lang_rc
1072 gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
1073 const char *current_gdb_prompt)
1075 if (!gdb_python_initialized)
1076 return EXT_LANG_RC_NOP;
1078 gdbpy_enter enter_py;
1080 if (!evregpy_no_listeners_p (gdb_py_events.before_prompt)
1081 && evpy_emit_event (NULL, gdb_py_events.before_prompt) < 0)
1082 return EXT_LANG_RC_ERROR;
1084 if (gdb_python_module
1085 && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
1087 gdbpy_ref<> hook (PyObject_GetAttrString (gdb_python_module,
1091 gdbpy_print_stack ();
1092 return EXT_LANG_RC_ERROR;
1095 if (PyCallable_Check (hook.get ()))
1097 gdbpy_ref<> current_prompt (PyString_FromString (current_gdb_prompt));
1098 if (current_prompt == NULL)
1100 gdbpy_print_stack ();
1101 return EXT_LANG_RC_ERROR;
1105 (PyObject_CallFunctionObjArgs (hook.get (), current_prompt.get (),
1109 gdbpy_print_stack ();
1110 return EXT_LANG_RC_ERROR;
1113 /* Return type should be None, or a String. If it is None,
1114 fall through, we will not set a prompt. If it is a
1115 string, set PROMPT. Anything else, set an exception. */
1116 if (result != Py_None && ! PyString_Check (result.get ()))
1118 PyErr_Format (PyExc_RuntimeError,
1119 _("Return from prompt_hook must " \
1120 "be either a Python string, or None"));
1121 gdbpy_print_stack ();
1122 return EXT_LANG_RC_ERROR;
1125 if (result != Py_None)
1127 gdb::unique_xmalloc_ptr<char>
1128 prompt (python_string_to_host_string (result.get ()));
1132 gdbpy_print_stack ();
1133 return EXT_LANG_RC_ERROR;
1136 set_prompt (prompt.get ());
1137 return EXT_LANG_RC_OK;
1142 return EXT_LANG_RC_NOP;
1145 /* This is the extension_language_ops.colorize "method". */
1147 static gdb::optional<std::string>
1148 gdbpy_colorize (const std::string &filename, const std::string &contents)
1150 if (!gdb_python_initialized)
1153 gdbpy_enter enter_py;
1155 if (gdb_python_module == nullptr
1156 || !PyObject_HasAttrString (gdb_python_module, "colorize"))
1159 gdbpy_ref<> hook (PyObject_GetAttrString (gdb_python_module, "colorize"));
1160 if (hook == nullptr)
1162 gdbpy_print_stack ();
1166 if (!PyCallable_Check (hook.get ()))
1169 gdbpy_ref<> fname_arg (PyString_FromString (filename.c_str ()));
1170 if (fname_arg == nullptr)
1172 gdbpy_print_stack ();
1176 /* The pygments library, which is what we currently use for applying
1177 styling, is happy to take input as a bytes object, and to figure out
1178 the encoding for itself. This removes the need for us to figure out
1179 (guess?) at how the content is encoded, which is probably a good
1181 gdbpy_ref<> contents_arg (PyBytes_FromStringAndSize (contents.c_str (),
1183 if (contents_arg == nullptr)
1185 gdbpy_print_stack ();
1189 /* Calling gdb.colorize passing in the filename (a string), and the file
1190 contents (a bytes object). This function should return either a bytes
1191 object, the same contents with styling applied, or None to indicate
1192 that no styling should be performed. */
1193 gdbpy_ref<> result (PyObject_CallFunctionObjArgs (hook.get (),
1195 contents_arg.get (),
1197 if (result == nullptr)
1199 gdbpy_print_stack ();
1203 if (result == Py_None)
1205 else if (!PyBytes_Check (result.get ()))
1207 PyErr_SetString (PyExc_TypeError,
1208 _("Return value from gdb.colorize should be a bytes object or None."));
1209 gdbpy_print_stack ();
1213 return std::string (PyBytes_AsString (result.get ()));
1220 /* A python function to write a single string using gdb's filtered
1221 output stream . The optional keyword STREAM can be used to write
1222 to a particular stream. The default stream is to gdb_stdout. */
1225 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
1228 static const char *keywords[] = { "text", "stream", NULL };
1229 int stream_type = 0;
1231 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1237 switch (stream_type)
1241 fprintf_filtered (gdb_stderr, "%s", arg);
1246 fprintf_filtered (gdb_stdlog, "%s", arg);
1250 fprintf_filtered (gdb_stdout, "%s", arg);
1253 catch (const gdb_exception &except)
1255 GDB_PY_HANDLE_EXCEPTION (except);
1261 /* A python function to flush a gdb stream. The optional keyword
1262 STREAM can be used to flush a particular stream. The default stream
1266 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1268 static const char *keywords[] = { "stream", NULL };
1269 int stream_type = 0;
1271 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1275 switch (stream_type)
1279 gdb_flush (gdb_stderr);
1284 gdb_flush (gdb_stdlog);
1288 gdb_flush (gdb_stdout);
1294 /* Return non-zero if print-stack is not "none". */
1297 gdbpy_print_python_errors_p (void)
1299 return gdbpy_should_print_stack != python_excp_none;
1302 /* Print a python exception trace, print just a message, or print
1303 nothing and clear the python exception, depending on
1304 gdbpy_should_print_stack. Only call this if a python exception is
1307 gdbpy_print_stack (void)
1310 /* Print "none", just clear exception. */
1311 if (gdbpy_should_print_stack == python_excp_none)
1315 /* Print "full" message and backtrace. */
1316 else if (gdbpy_should_print_stack == python_excp_full)
1319 /* PyErr_Print doesn't necessarily end output with a newline.
1320 This works because Python's stdout/stderr is fed through
1326 catch (const gdb_exception &except)
1330 /* Print "message", just error print message. */
1333 gdbpy_err_fetch fetched_error;
1335 gdb::unique_xmalloc_ptr<char> msg = fetched_error.to_string ();
1336 gdb::unique_xmalloc_ptr<char> type;
1337 /* Don't compute TYPE if MSG already indicates that there is an
1340 type = fetched_error.type_to_string ();
1344 if (msg == NULL || type == NULL)
1346 /* An error occurred computing the string representation of the
1348 fprintf_filtered (gdb_stderr,
1349 _("Error occurred computing Python error" \
1354 fprintf_filtered (gdb_stderr, "Python Exception %s: %s\n",
1355 type.get (), msg.get ());
1357 catch (const gdb_exception &except)
1363 /* Like gdbpy_print_stack, but if the exception is a
1364 KeyboardException, throw a gdb "quit" instead. */
1367 gdbpy_print_stack_or_quit ()
1369 if (PyErr_ExceptionMatches (PyExc_KeyboardInterrupt))
1372 throw_quit ("Quit");
1374 gdbpy_print_stack ();
1379 /* Return a sequence holding all the Progspaces. */
1382 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1384 gdbpy_ref<> list (PyList_New (0));
1388 for (struct program_space *ps : program_spaces)
1390 gdbpy_ref<> item = pspace_to_pspace_object (ps);
1392 if (item == NULL || PyList_Append (list.get (), item.get ()) == -1)
1396 return list.release ();
1401 /* The "current" objfile. This is set when gdb detects that a new
1402 objfile has been loaded. It is only set for the duration of a call to
1403 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1405 static struct objfile *gdbpy_current_objfile;
1407 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1408 as Python code. This does not throw any errors. If an exception
1409 occurs python will print the traceback and clear the error indicator.
1410 This is the extension_language_script_ops.objfile_script_sourcer
1414 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1415 struct objfile *objfile, FILE *file,
1416 const char *filename)
1418 if (!gdb_python_initialized)
1421 gdbpy_enter enter_py (objfile->arch ());
1422 scoped_restore restire_current_objfile
1423 = make_scoped_restore (&gdbpy_current_objfile, objfile);
1425 python_run_simple_file (file, filename);
1428 /* Set the current objfile to OBJFILE and then execute SCRIPT
1429 as Python code. This does not throw any errors. If an exception
1430 occurs python will print the traceback and clear the error indicator.
1431 This is the extension_language_script_ops.objfile_script_executor
1435 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1436 struct objfile *objfile, const char *name,
1439 if (!gdb_python_initialized)
1442 gdbpy_enter enter_py (objfile->arch ());
1443 scoped_restore restire_current_objfile
1444 = make_scoped_restore (&gdbpy_current_objfile, objfile);
1446 PyRun_SimpleString (script);
1449 /* Return the current Objfile, or None if there isn't one. */
1452 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1454 if (! gdbpy_current_objfile)
1457 return objfile_to_objfile_object (gdbpy_current_objfile).release ();
1460 /* Compute the list of active python type printers and store them in
1461 EXT_PRINTERS->py_type_printers. The product of this function is used by
1462 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1463 This is the extension_language_ops.start_type_printers "method". */
1466 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1467 struct ext_lang_type_printers *ext_printers)
1469 PyObject *printers_obj = NULL;
1471 if (!gdb_python_initialized)
1474 gdbpy_enter enter_py;
1476 gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1477 if (type_module == NULL)
1479 gdbpy_print_stack ();
1483 gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1484 "get_type_recognizers"));
1487 gdbpy_print_stack ();
1491 printers_obj = PyObject_CallFunctionObjArgs (func.get (), (char *) NULL);
1492 if (printers_obj == NULL)
1493 gdbpy_print_stack ();
1495 ext_printers->py_type_printers = printers_obj;
1498 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1499 a newly allocated string holding the type's replacement name, and return
1500 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1501 If there's a Python error return EXT_LANG_RC_ERROR.
1502 Otherwise, return EXT_LANG_RC_NOP.
1503 This is the extension_language_ops.apply_type_printers "method". */
1505 static enum ext_lang_rc
1506 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1507 const struct ext_lang_type_printers *ext_printers,
1508 struct type *type, char **prettied_type)
1510 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
1511 gdb::unique_xmalloc_ptr<char> result;
1513 if (printers_obj == NULL)
1514 return EXT_LANG_RC_NOP;
1516 if (!gdb_python_initialized)
1517 return EXT_LANG_RC_NOP;
1519 gdbpy_enter enter_py;
1521 gdbpy_ref<> type_obj (type_to_type_object (type));
1522 if (type_obj == NULL)
1524 gdbpy_print_stack ();
1525 return EXT_LANG_RC_ERROR;
1528 gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1529 if (type_module == NULL)
1531 gdbpy_print_stack ();
1532 return EXT_LANG_RC_ERROR;
1535 gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1536 "apply_type_recognizers"));
1539 gdbpy_print_stack ();
1540 return EXT_LANG_RC_ERROR;
1543 gdbpy_ref<> result_obj (PyObject_CallFunctionObjArgs (func.get (),
1547 if (result_obj == NULL)
1549 gdbpy_print_stack ();
1550 return EXT_LANG_RC_ERROR;
1553 if (result_obj == Py_None)
1554 return EXT_LANG_RC_NOP;
1556 result = python_string_to_host_string (result_obj.get ());
1559 gdbpy_print_stack ();
1560 return EXT_LANG_RC_ERROR;
1563 *prettied_type = result.release ();
1564 return EXT_LANG_RC_OK;
1567 /* Free the result of start_type_printers.
1568 This is the extension_language_ops.free_type_printers "method". */
1571 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1572 struct ext_lang_type_printers *ext_printers)
1574 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
1576 if (printers == NULL)
1579 if (!gdb_python_initialized)
1582 gdbpy_enter enter_py;
1583 Py_DECREF (printers);
1586 #else /* HAVE_PYTHON */
1588 /* Dummy implementation of the gdb "python-interactive" and "python"
1592 python_interactive_command (const char *arg, int from_tty)
1594 arg = skip_spaces (arg);
1596 error (_("Python scripting is not supported in this copy of GDB."));
1599 counted_command_line l = get_command_line (python_control, "");
1601 execute_control_command_untraced (l.get ());
1606 python_command (const char *arg, int from_tty)
1608 python_interactive_command (arg, from_tty);
1611 #endif /* HAVE_PYTHON */
1613 /* When this is turned on before Python is initialised then Python will
1614 ignore any environment variables related to Python. This is equivalent
1615 to passing `-E' to the python program. */
1616 static bool python_ignore_environment = false;
1618 /* Implement 'show python ignore-environment'. */
1621 show_python_ignore_environment (struct ui_file *file, int from_tty,
1622 struct cmd_list_element *c, const char *value)
1624 fprintf_filtered (file, _("Python's ignore-environment setting is %s.\n"),
1628 /* Implement 'set python ignore-environment'. This sets Python's internal
1629 flag no matter when the command is issued, however, if this is used
1630 after Py_Initialize has been called then most of the environment will
1631 already have been read. */
1634 set_python_ignore_environment (const char *args, int from_tty,
1635 struct cmd_list_element *c)
1638 Py_IgnoreEnvironmentFlag = python_ignore_environment ? 1 : 0;
1642 /* When this is turned on before Python is initialised then Python will
1643 not write `.pyc' files on import of a module. */
1644 static enum auto_boolean python_dont_write_bytecode = AUTO_BOOLEAN_AUTO;
1646 /* Implement 'show python dont-write-bytecode'. */
1649 show_python_dont_write_bytecode (struct ui_file *file, int from_tty,
1650 struct cmd_list_element *c, const char *value)
1652 if (python_dont_write_bytecode == AUTO_BOOLEAN_AUTO)
1654 const char *auto_string
1655 = (python_ignore_environment
1656 || getenv ("PYTHONDONTWRITEBYTECODE") == nullptr) ? "off" : "on";
1658 fprintf_filtered (file,
1659 _("Python's dont-write-bytecode setting is %s (currently %s).\n"),
1660 value, auto_string);
1663 fprintf_filtered (file, _("Python's dont-write-bytecode setting is %s.\n"),
1667 /* Implement 'set python dont-write-bytecode'. This sets Python's internal
1668 flag no matter when the command is issued, however, if this is used
1669 after Py_Initialize has been called then many modules could already
1670 have been imported and their byte code written out. */
1673 set_python_dont_write_bytecode (const char *args, int from_tty,
1674 struct cmd_list_element *c)
1677 if (python_dont_write_bytecode == AUTO_BOOLEAN_AUTO)
1678 Py_DontWriteBytecodeFlag
1679 = (!python_ignore_environment
1680 && getenv ("PYTHONDONTWRITEBYTECODE") != nullptr) ? 1 : 0;
1682 Py_DontWriteBytecodeFlag
1683 = python_dont_write_bytecode == AUTO_BOOLEAN_TRUE ? 1 : 0;
1684 #endif /* HAVE_PYTHON */
1689 /* Lists for 'set python' commands. */
1691 static struct cmd_list_element *user_set_python_list;
1692 static struct cmd_list_element *user_show_python_list;
1694 /* Initialize the Python code. */
1698 /* This is installed as a final cleanup and cleans up the
1699 interpreter. This lets Python's 'atexit' work. */
1702 finalize_python (void *ignore)
1704 struct active_ext_lang_state *previous_active;
1706 /* We don't use ensure_python_env here because if we ever ran the
1707 cleanup, gdb would crash -- because the cleanup calls into the
1708 Python interpreter, which we are about to destroy. It seems
1709 clearer to make the needed calls explicitly here than to create a
1710 cleanup and then mysteriously discard it. */
1712 /* This is only called as a final cleanup so we can assume the active
1713 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1714 previous_active = set_active_ext_lang (&extension_language_python);
1716 (void) PyGILState_Ensure ();
1717 gdbpy_enter::finalize ();
1721 gdb_python_initialized = false;
1722 restore_active_ext_lang (previous_active);
1726 static struct PyModuleDef python_GdbModuleDef =
1728 PyModuleDef_HEAD_INIT,
1739 /* This is called via the PyImport_AppendInittab mechanism called
1740 during initialization, to make the built-in _gdb module known to
1742 PyMODINIT_FUNC init__gdb_module (void);
1744 init__gdb_module (void)
1746 return PyModule_Create (&python_GdbModuleDef);
1750 /* Emit a gdb.GdbExitingEvent, return a negative value if there are any
1751 errors, otherwise, return 0. */
1754 emit_exiting_event (int exit_code)
1756 gdbpy_ref<> event_obj = create_event_object (&gdb_exiting_event_object_type);
1757 if (event_obj == nullptr)
1760 gdbpy_ref<> code = gdb_py_object_from_longest (exit_code);
1761 if (evpy_add_attribute (event_obj.get (), "exit_code", code.get ()) < 0)
1764 return evpy_emit_event (event_obj.get (), gdb_py_events.gdb_exiting);
1767 /* Callback for the gdb_exiting observable. EXIT_CODE is the value GDB
1771 gdbpy_gdb_exiting (int exit_code)
1773 if (!gdb_python_initialized)
1776 gdbpy_enter enter_py;
1778 if (emit_exiting_event (exit_code) < 0)
1779 gdbpy_print_stack ();
1783 do_start_initialization ()
1785 #ifdef WITH_PYTHON_PATH
1786 /* Work around problem where python gets confused about where it is,
1787 and then can't find its libraries, etc.
1788 NOTE: Python assumes the following layout:
1790 /foo/lib/pythonX.Y/...
1791 This must be done before calling Py_Initialize. */
1792 gdb::unique_xmalloc_ptr<char> progname
1793 (concat (ldirname (python_libdir.c_str ()).c_str (), SLASH_STRING, "bin",
1794 SLASH_STRING, "python", (char *) NULL));
1796 /* Python documentation indicates that the memory given
1797 to Py_SetProgramName cannot be freed. However, it seems that
1798 at least Python 3.7.4 Py_SetProgramName takes a copy of the
1799 given program_name. Making progname_copy static and not release
1800 the memory avoids a leak report for Python versions that duplicate
1801 program_name, and respect the requirement of Py_SetProgramName
1802 for Python versions that do not duplicate program_name. */
1803 static wchar_t *progname_copy;
1805 std::string oldloc = setlocale (LC_ALL, NULL);
1806 setlocale (LC_ALL, "");
1807 size_t progsize = strlen (progname.get ());
1808 progname_copy = XNEWVEC (wchar_t, progsize + 1);
1809 size_t count = mbstowcs (progname_copy, progname.get (), progsize + 1);
1810 if (count == (size_t) -1)
1812 fprintf (stderr, "Could not convert python path to string\n");
1815 setlocale (LC_ALL, oldloc.c_str ());
1817 /* Note that Py_SetProgramName expects the string it is passed to
1818 remain alive for the duration of the program's execution, so
1819 it is not freed after this call. */
1820 Py_SetProgramName (progname_copy);
1822 /* Define _gdb as a built-in module. */
1823 PyImport_AppendInittab ("_gdb", init__gdb_module);
1825 Py_SetProgramName (progname.release ());
1830 #if PY_VERSION_HEX < 0x03090000
1831 /* PyEval_InitThreads became deprecated in Python 3.9 and will
1832 be removed in Python 3.11. Prior to Python 3.7, this call was
1833 required to initialize the GIL. */
1834 PyEval_InitThreads ();
1838 gdb_module = PyImport_ImportModule ("_gdb");
1840 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1842 if (gdb_module == NULL)
1845 if (PyModule_AddStringConstant (gdb_module, "VERSION", version) < 0
1846 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG", host_name) < 0
1847 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1851 /* Add stream constants. */
1852 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1853 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1854 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1857 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1858 if (gdbpy_gdb_error == NULL
1859 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1862 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1863 gdbpy_gdb_error, NULL);
1864 if (gdbpy_gdb_memory_error == NULL
1865 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1866 gdbpy_gdb_memory_error) < 0)
1869 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1870 if (gdbpy_gdberror_exc == NULL
1871 || gdb_pymodule_addobject (gdb_module, "GdbError",
1872 gdbpy_gdberror_exc) < 0)
1875 gdbpy_initialize_gdb_readline ();
1877 if (gdbpy_initialize_auto_load () < 0
1878 || gdbpy_initialize_values () < 0
1879 || gdbpy_initialize_frames () < 0
1880 || gdbpy_initialize_commands () < 0
1881 || gdbpy_initialize_instruction () < 0
1882 || gdbpy_initialize_record () < 0
1883 || gdbpy_initialize_btrace () < 0
1884 || gdbpy_initialize_symbols () < 0
1885 || gdbpy_initialize_symtabs () < 0
1886 || gdbpy_initialize_blocks () < 0
1887 || gdbpy_initialize_functions () < 0
1888 || gdbpy_initialize_parameters () < 0
1889 || gdbpy_initialize_types () < 0
1890 || gdbpy_initialize_pspace () < 0
1891 || gdbpy_initialize_objfile () < 0
1892 || gdbpy_initialize_breakpoints () < 0
1893 || gdbpy_initialize_finishbreakpoints () < 0
1894 || gdbpy_initialize_lazy_string () < 0
1895 || gdbpy_initialize_linetable () < 0
1896 || gdbpy_initialize_thread () < 0
1897 || gdbpy_initialize_inferior () < 0
1898 || gdbpy_initialize_eventregistry () < 0
1899 || gdbpy_initialize_py_events () < 0
1900 || gdbpy_initialize_event () < 0
1901 || gdbpy_initialize_arch () < 0
1902 || gdbpy_initialize_registers () < 0
1903 || gdbpy_initialize_xmethods () < 0
1904 || gdbpy_initialize_unwind () < 0
1905 || gdbpy_initialize_membuf () < 0
1906 || gdbpy_initialize_connection () < 0
1907 || gdbpy_initialize_tui () < 0)
1910 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
1911 if (gdbpy_initialize_event_generic (&name##_event_object_type, py_name) < 0) \
1913 #include "py-event-types.def"
1914 #undef GDB_PY_DEFINE_EVENT_TYPE
1916 gdbpy_to_string_cst = PyString_FromString ("to_string");
1917 if (gdbpy_to_string_cst == NULL)
1919 gdbpy_children_cst = PyString_FromString ("children");
1920 if (gdbpy_children_cst == NULL)
1922 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1923 if (gdbpy_display_hint_cst == NULL)
1925 gdbpy_doc_cst = PyString_FromString ("__doc__");
1926 if (gdbpy_doc_cst == NULL)
1928 gdbpy_enabled_cst = PyString_FromString ("enabled");
1929 if (gdbpy_enabled_cst == NULL)
1931 gdbpy_value_cst = PyString_FromString ("value");
1932 if (gdbpy_value_cst == NULL)
1935 gdb::observers::gdb_exiting.attach (gdbpy_gdb_exiting, "python");
1937 /* Release the GIL while gdb runs. */
1938 PyEval_SaveThread ();
1940 make_final_cleanup (finalize_python, NULL);
1942 /* Only set this when initialization has succeeded. */
1943 gdb_python_initialized = 1;
1948 namespace selftests {
1950 /* Entry point for python unit tests. */
1955 #define CMD(S) execute_command_to_string (S, "python print(5)", 0, true)
1960 SELF_CHECK (output == "5\n");
1963 bool saw_exception = false;
1965 scoped_restore reset_gdb_python_initialized
1966 = make_scoped_restore (&gdb_python_initialized, 0);
1971 catch (const gdb_exception &e)
1973 saw_exception = true;
1974 SELF_CHECK (e.reason == RETURN_ERROR);
1975 SELF_CHECK (e.error == GENERIC_ERROR);
1976 SELF_CHECK (*e.message == "Python not initialized");
1978 SELF_CHECK (saw_exception);
1979 SELF_CHECK (output.empty ());
1982 saw_exception = false;
1984 scoped_restore save_hook
1985 = make_scoped_restore (&hook_set_active_ext_lang,
1986 []() { raise (SIGINT); });
1991 catch (const gdb_exception &e)
1993 saw_exception = true;
1994 SELF_CHECK (e.reason == RETURN_ERROR);
1995 SELF_CHECK (e.error == GENERIC_ERROR);
1996 SELF_CHECK (*e.message == "Error while executing Python code.");
1998 SELF_CHECK (saw_exception);
1999 std::string ref_output("Traceback (most recent call last):\n"
2000 " File \"<string>\", line 1, in <module>\n"
2001 "KeyboardInterrupt\n");
2002 SELF_CHECK (output == ref_output);
2010 } // namespace selftests
2011 #endif /* GDB_SELF_TEST */
2013 #endif /* HAVE_PYTHON */
2016 cmd_list_element *python_cmd_element = nullptr;
2018 void _initialize_python ();
2020 _initialize_python ()
2022 cmd_list_element *python_interactive_cmd
2023 = add_com ("python-interactive", class_obscure,
2024 python_interactive_command,
2027 Start an interactive Python prompt.\n\
2029 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
2032 Alternatively, a single-line Python command can be given as an\n\
2033 argument, and if the command is an expression, the result will be\n\
2034 printed. For example:\n\
2036 (gdb) python-interactive 2 + 3\n\
2038 #else /* HAVE_PYTHON */
2040 Start a Python interactive prompt.\n\
2042 Python scripting is not supported in this copy of GDB.\n\
2043 This command is only a placeholder.")
2044 #endif /* HAVE_PYTHON */
2046 add_com_alias ("pi", python_interactive_cmd, class_obscure, 1);
2048 python_cmd_element = add_com ("python", class_obscure, python_command,
2051 Evaluate a Python command.\n\
2053 The command can be given as an argument, for instance:\n\
2055 python print (23)\n\
2057 If no argument is given, the following lines are read and used\n\
2058 as the Python commands. Type a line containing \"end\" to indicate\n\
2059 the end of the command.")
2060 #else /* HAVE_PYTHON */
2062 Evaluate a Python command.\n\
2064 Python scripting is not supported in this copy of GDB.\n\
2065 This command is only a placeholder.")
2066 #endif /* HAVE_PYTHON */
2068 add_com_alias ("py", python_cmd_element, class_obscure, 1);
2070 /* Add set/show python print-stack. */
2071 add_setshow_prefix_cmd ("python", no_class,
2072 _("Prefix command for python preference settings."),
2073 _("Prefix command for python preference settings."),
2074 &user_set_python_list, &user_show_python_list,
2075 &setlist, &showlist);
2077 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
2078 &gdbpy_should_print_stack, _("\
2079 Set mode for Python stack dump on error."), _("\
2080 Show the mode of Python stack printing on error."), _("\
2081 none == no stack or message will be printed.\n\
2082 full == a message and a stack will be printed.\n\
2083 message == an error message without a stack will be printed."),
2085 &user_set_python_list,
2086 &user_show_python_list);
2088 add_setshow_boolean_cmd ("ignore-environment", no_class,
2089 &python_ignore_environment, _("\
2090 Set whether the Python interpreter should ignore environment variables."), _(" \
2091 Show whether the Python interpreter showlist ignore environment variables."), _(" \
2092 When enabled GDB's Python interpreter will ignore any Python related\n \
2093 flags in the environment. This is equivalent to passing `-E' to a\n \
2094 python executable."),
2095 set_python_ignore_environment,
2096 show_python_ignore_environment,
2097 &user_set_python_list,
2098 &user_show_python_list);
2100 add_setshow_auto_boolean_cmd ("dont-write-bytecode", no_class,
2101 &python_dont_write_bytecode, _("\
2102 Set whether the Python interpreter should ignore environment variables."), _(" \
2103 Show whether the Python interpreter showlist ignore environment variables."), _(" \
2104 When enabled GDB's Python interpreter will ignore any Python related\n \
2105 flags in the environment. This is equivalent to passing `-E' to a\n \
2106 python executable."),
2107 set_python_dont_write_bytecode,
2108 show_python_dont_write_bytecode,
2109 &user_set_python_list,
2110 &user_show_python_list);
2114 selftests::register_test ("python", selftests::test_python);
2115 #endif /* GDB_SELF_TEST */
2116 #endif /* HAVE_PYTHON */
2121 /* Helper function for gdbpy_initialize. This does the work and then
2122 returns false if an error has occurred and must be displayed, or true on
2126 do_initialize (const struct extension_language_defn *extlang)
2131 /* Add the initial data-directory to sys.path. */
2133 std::string gdb_pythondir = (std::string (gdb_datadir) + SLASH_STRING
2136 sys_path = PySys_GetObject ("path");
2138 /* If sys.path is not defined yet, define it first. */
2139 if (!(sys_path && PyList_Check (sys_path)))
2142 PySys_SetPath (L"");
2146 sys_path = PySys_GetObject ("path");
2148 if (sys_path && PyList_Check (sys_path))
2150 gdbpy_ref<> pythondir (PyString_FromString (gdb_pythondir.c_str ()));
2151 if (pythondir == NULL || PyList_Insert (sys_path, 0, pythondir.get ()))
2157 /* Import the gdb module to finish the initialization, and
2158 add it to __main__ for convenience. */
2159 m = PyImport_AddModule ("__main__");
2163 /* Keep the reference to gdb_python_module since it is in a global
2165 gdb_python_module = PyImport_ImportModule ("gdb");
2166 if (gdb_python_module == NULL)
2168 gdbpy_print_stack ();
2169 /* This is passed in one call to warning so that blank lines aren't
2170 inserted between each line of text. */
2172 "Could not load the Python gdb module from `%s'.\n"
2173 "Limited Python support is available from the _gdb module.\n"
2174 "Suggest passing --data-directory=/path/to/gdb/data-directory."),
2175 gdb_pythondir.c_str ());
2176 /* We return "success" here as we've already emitted the
2181 return gdb_pymodule_addobject (m, "gdb", gdb_python_module) >= 0;
2184 /* Perform Python initialization. This will be called after GDB has
2185 performed all of its own initialization. This is the
2186 extension_language_ops.initialize "method". */
2189 gdbpy_initialize (const struct extension_language_defn *extlang)
2191 if (!do_start_initialization () && PyErr_Occurred ())
2192 gdbpy_print_stack ();
2194 gdbpy_enter enter_py;
2196 if (!do_initialize (extlang))
2198 gdbpy_print_stack ();
2199 warning (_("internal error: Unhandled Python exception"));
2203 /* Return non-zero if Python has successfully initialized.
2204 This is the extension_languages_ops.initialized "method". */
2207 gdbpy_initialized (const struct extension_language_defn *extlang)
2209 return gdb_python_initialized;
2212 PyMethodDef python_GdbMethods[] =
2214 { "history", gdbpy_history, METH_VARARGS,
2215 "Get a value from history" },
2216 { "add_history", gdbpy_add_history, METH_VARARGS,
2217 "Add a value to the value history list" },
2218 { "history_count", gdbpy_history_count, METH_NOARGS,
2219 "Return an integer, the number of values in GDB's value history" },
2220 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
2221 "execute (command [, from_tty] [, to_string]) -> [String]\n\
2222 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
2223 a Python String containing the output of the command if to_string is\n\
2225 { "parameter", gdbpy_parameter, METH_VARARGS,
2226 "Return a gdb parameter's value" },
2228 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
2229 "Return a tuple of all breakpoint objects" },
2231 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
2232 "Find the default visualizer for a Value." },
2234 { "progspaces", gdbpy_progspaces, METH_NOARGS,
2235 "Return a sequence of all progspaces." },
2237 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
2238 "Return the current Objfile being loaded, or None." },
2240 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
2241 "newest_frame () -> gdb.Frame.\n\
2242 Return the newest frame object." },
2243 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
2244 "selected_frame () -> gdb.Frame.\n\
2245 Return the selected frame object." },
2246 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
2247 "stop_reason_string (Integer) -> String.\n\
2248 Return a string explaining unwind stop reason." },
2250 { "start_recording", gdbpy_start_recording, METH_VARARGS,
2251 "start_recording ([method] [, format]) -> gdb.Record.\n\
2252 Start recording with the given method. If no method is given, will fall back\n\
2253 to the system default method. If no format is given, will fall back to the\n\
2254 default format for the given method."},
2255 { "current_recording", gdbpy_current_recording, METH_NOARGS,
2256 "current_recording () -> gdb.Record.\n\
2257 Return current recording object." },
2258 { "stop_recording", gdbpy_stop_recording, METH_NOARGS,
2259 "stop_recording () -> None.\n\
2260 Stop current recording." },
2262 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
2263 METH_VARARGS | METH_KEYWORDS,
2264 "lookup_type (name [, block]) -> type\n\
2265 Return a Type corresponding to the given name." },
2266 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
2267 METH_VARARGS | METH_KEYWORDS,
2268 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
2269 Return a tuple with the symbol corresponding to the given name (or None) and\n\
2270 a boolean indicating if name is a field of the current implied argument\n\
2271 `this' (when the current language is object-oriented)." },
2272 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
2273 METH_VARARGS | METH_KEYWORDS,
2274 "lookup_global_symbol (name [, domain]) -> symbol\n\
2275 Return the symbol corresponding to the given name (or None)." },
2276 { "lookup_static_symbol", (PyCFunction) gdbpy_lookup_static_symbol,
2277 METH_VARARGS | METH_KEYWORDS,
2278 "lookup_static_symbol (name [, domain]) -> symbol\n\
2279 Return the static-linkage symbol corresponding to the given name (or None)." },
2280 { "lookup_static_symbols", (PyCFunction) gdbpy_lookup_static_symbols,
2281 METH_VARARGS | METH_KEYWORDS,
2282 "lookup_static_symbols (name [, domain]) -> symbol\n\
2283 Return a list of all static-linkage symbols corresponding to the given name." },
2285 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
2286 METH_VARARGS | METH_KEYWORDS,
2287 "lookup_objfile (name, [by_build_id]) -> objfile\n\
2288 Look up the specified objfile.\n\
2289 If by_build_id is True, the objfile is looked up by using name\n\
2290 as its build id." },
2292 { "decode_line", gdbpy_decode_line, METH_VARARGS,
2293 "decode_line (String) -> Tuple. Decode a string argument the way\n\
2294 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
2295 The first element contains any unparsed portion of the String parameter\n\
2296 (or None if the string was fully parsed). The second element contains\n\
2297 a tuple that contains all the locations that match, represented as\n\
2298 gdb.Symtab_and_line objects (or None)."},
2299 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
2300 "parse_and_eval (String) -> Value.\n\
2301 Parse String as an expression, evaluate it, and return the result as a Value."
2304 { "post_event", gdbpy_post_event, METH_VARARGS,
2305 "Post an event into gdb's event loop." },
2307 { "target_charset", gdbpy_target_charset, METH_NOARGS,
2308 "target_charset () -> string.\n\
2309 Return the name of the current target charset." },
2310 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2311 "target_wide_charset () -> string.\n\
2312 Return the name of the current target wide charset." },
2313 { "host_charset", gdbpy_host_charset, METH_NOARGS,
2314 "host_charset () -> string.\n\
2315 Return the name of the current host charset." },
2316 { "rbreak", (PyCFunction) gdbpy_rbreak, METH_VARARGS | METH_KEYWORDS,
2317 "rbreak (Regex) -> List.\n\
2318 Return a Tuple containing gdb.Breakpoint objects that match the given Regex." },
2319 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2320 "string_to_argv (String) -> Array.\n\
2321 Parse String and return an argv-like array.\n\
2322 Arguments are separate by spaces and may be quoted."
2324 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2325 "Write a string using gdb's filtered stream." },
2326 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2327 "Flush gdb's filtered stdout stream." },
2328 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2329 "selected_thread () -> gdb.InferiorThread.\n\
2330 Return the selected thread object." },
2331 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2332 "selected_inferior () -> gdb.Inferior.\n\
2333 Return the selected inferior object." },
2334 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2335 "inferiors () -> (gdb.Inferior, ...).\n\
2336 Return a tuple containing all inferiors." },
2338 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2339 "invalidate_cached_frames () -> None.\n\
2340 Invalidate any cached frame objects in gdb.\n\
2341 Intended for internal use only." },
2343 { "convenience_variable", gdbpy_convenience_variable, METH_VARARGS,
2344 "convenience_variable (NAME) -> value.\n\
2345 Return the value of the convenience variable $NAME,\n\
2346 or None if not set." },
2347 { "set_convenience_variable", gdbpy_set_convenience_variable, METH_VARARGS,
2348 "convenience_variable (NAME, VALUE) -> None.\n\
2349 Set the value of the convenience variable $NAME." },
2352 { "register_window_type", (PyCFunction) gdbpy_register_tui_window,
2353 METH_VARARGS | METH_KEYWORDS,
2354 "register_window_type (NAME, CONSTRUCSTOR) -> None\n\
2355 Register a TUI window constructor." },
2358 { "architecture_names", gdbpy_all_architecture_names, METH_NOARGS,
2359 "architecture_names () -> List.\n\
2360 Return a list of all the architecture names GDB understands." },
2362 { "connections", gdbpy_connections, METH_NOARGS,
2363 "connections () -> List.\n\
2364 Return a list of gdb.TargetConnection objects." },
2366 {NULL, NULL, 0, NULL}
2369 /* Define all the event objects. */
2370 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
2371 PyTypeObject name##_event_object_type \
2372 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
2374 PyVarObject_HEAD_INIT (NULL, 0) \
2375 "gdb." py_name, /* tp_name */ \
2376 sizeof (event_object), /* tp_basicsize */ \
2377 0, /* tp_itemsize */ \
2378 evpy_dealloc, /* tp_dealloc */ \
2380 0, /* tp_getattr */ \
2381 0, /* tp_setattr */ \
2382 0, /* tp_compare */ \
2384 0, /* tp_as_number */ \
2385 0, /* tp_as_sequence */ \
2386 0, /* tp_as_mapping */ \
2390 0, /* tp_getattro */ \
2391 0, /* tp_setattro */ \
2392 0, /* tp_as_buffer */ \
2393 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ \
2395 0, /* tp_traverse */ \
2397 0, /* tp_richcompare */ \
2398 0, /* tp_weaklistoffset */ \
2400 0, /* tp_iternext */ \
2401 0, /* tp_methods */ \
2402 0, /* tp_members */ \
2403 0, /* tp_getset */ \
2404 &base, /* tp_base */ \
2406 0, /* tp_descr_get */ \
2407 0, /* tp_descr_set */ \
2408 0, /* tp_dictoffset */ \
2412 #include "py-event-types.def"
2413 #undef GDB_PY_DEFINE_EVENT_TYPE
2415 #endif /* HAVE_PYTHON */