diff --git a/gdb/NEWS b/gdb/NEWS
index d3699de..a50f097 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -140,6 +140,10 @@
      when output is going to standard output, and False when output is
      going to a string.
 
+  ** Setting the documentation string (__doc__) of a gdb.Parameter
+     sub-class to the empty string, means GDB will only display the
+     set_doc or show_doc strings in the set/show help output.
+
 * Guile API
 
   ** New type <gdb:color> for dealing with colors.
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index 7bb6503..1a2d772 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -5079,7 +5079,9 @@
 documentation string, a default value is used.  The documentation
 string is included in the output of the parameters @code{help set} and
 @code{help show} commands, and should be written taking this into
-account.
+account.  If the documentation string for the parameter's class is the
+empty string then @value{GDBN} will only use @code{Parameter.set_doc}
+or @code{Parameter.show_doc} (see below) in the @kbd{help} output.
 @end defun
 
 @defvar Parameter.set_doc
diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c
index 763680e..06237b6 100644
--- a/gdb/python/py-param.c
+++ b/gdb/python/py-param.c
@@ -495,7 +495,11 @@ get_doc_string (PyObject *object, enum doc_string_type doc_type,
 	}
     }
 
-  if (result == nullptr)
+  /* For the set/show docs, if these strings are empty then we set then to
+     a non-empty string.  This ensures that the command has some sane
+     documentation for its 'help' text.  */
+  if (result == nullptr
+      || (doc_type != doc_string_description && *result == '\0'))
     {
       if (doc_type == doc_string_description)
 	result.reset (xstrdup (_("This command is not documented.")));
@@ -904,6 +908,18 @@ parmpy_init (PyObject *self, PyObject *args, PyObject *kwds)
   show_doc = get_doc_string (self, doc_string_show, name);
   doc = get_doc_string (self, doc_string_description, cmd_name.get ());
 
+  /* The set/show docs should always be a non-empty string.  */
+  gdb_assert (set_doc != nullptr && *set_doc != '\0');
+  gdb_assert (show_doc != nullptr && *show_doc != '\0');
+
+  /* For the DOC string only, if it is the empty string, then we convert it
+     to NULL.  This means GDB will not even display a blank line for this
+     part of the help text, instead the set/show line is all the user will
+     get.  */
+  gdb_assert (doc != nullptr);
+  if (*doc == '\0')
+    doc = nullptr;
+
   Py_INCREF (self);
 
   try
diff --git a/gdb/testsuite/gdb.python/py-parameter.exp b/gdb/testsuite/gdb.python/py-parameter.exp
index 39a24ca..2ca56dc 100644
--- a/gdb/testsuite/gdb.python/py-parameter.exp
+++ b/gdb/testsuite/gdb.python/py-parameter.exp
@@ -346,6 +346,91 @@
 	"test general help"
 }
 
+# Test a parameter in which the __doc__ string is empty or None.
+proc_with_prefix test_empty_doc_parameter {} {
+    gdb_test_multiline "empty __doc__ parameter" \
+	"python" "" \
+	"class EmptyDocParam(gdb.Parameter):" "" \
+	"   __doc__ = \"\"" "" \
+	"   def __init__(self, name):" "" \
+	"      super ().__init__(name, gdb.COMMAND_NONE, gdb.PARAM_BOOLEAN)" "" \
+	"      self.value = True" "" \
+	"test_empty_doc_param = EmptyDocParam('print test-empty-doc-param')" ""\
+	"end"
+
+    # Setting the __doc__ string to empty means GDB will completely
+    # elide it from the output.
+    gdb_test "help set print test-empty-doc-param" \
+	"^Set the current value of 'print test-empty-doc-param'\\."
+
+    gdb_test_multiline "None __doc__ parameter" \
+	"python" "" \
+	"class NoneDocParam(gdb.Parameter):" "" \
+	"   __doc__ = None" "" \
+	"   def __init__(self, name):" "" \
+	"      super ().__init__(name, gdb.COMMAND_NONE, gdb.PARAM_BOOLEAN)" "" \
+	"      self.value = True" "" \
+	"test_none_doc_param = NoneDocParam('print test-none-doc-param')" ""\
+	"end"
+
+    # Setting the __doc__ string to None, or anything else that isn't
+    # a string, causes GDB to use a default string instead.
+    gdb_test "help set print test-none-doc-param" \
+	[multi_line \
+	     "^Set the current value of 'print test-none-doc-param'\\." \
+	     "This command is not documented\\."]
+}
+
+# Test a parameter in which the set_doc/show_doc strings are either
+# empty, or None.
+proc_with_prefix test_empty_set_show_doc_parameter {} {
+    gdb_test_multiline "empty set/show doc parameter" \
+	"python" "" \
+	"class EmptySetShowParam(gdb.Parameter):" "" \
+	"   set_doc = \"\"" "" \
+	"   show_doc = \"\"" "" \
+	"   def __init__(self, name):" "" \
+	"      super ().__init__(name, gdb.COMMAND_NONE, gdb.PARAM_BOOLEAN)" "" \
+	"      self.value = True" "" \
+	"test_empty_set_show_param = EmptySetShowParam('print test-empty-set-show-param')" ""\
+	"end"
+
+    # Setting the set_doc/show_doc string to empty means GDB will use
+    # a suitable default string.
+    gdb_test "help set print test-empty-set-show-param" \
+	[multi_line \
+	     "^Set the current value of 'print test-empty-set-show-param'\\." \
+	     "This command is not documented\\."]
+
+    gdb_test "help show print test-empty-set-show-param" \
+	[multi_line \
+	     "^Show the current value of 'print test-empty-set-show-param'\\." \
+	     "This command is not documented\\."]
+
+    gdb_test_multiline "None set/show doc parameter" \
+	"python" "" \
+	"class NoneSetShowParam(gdb.Parameter):" "" \
+	"   set_doc = None" "" \
+	"   show_doc = None" "" \
+	"   def __init__(self, name):" "" \
+	"      super ().__init__(name, gdb.COMMAND_NONE, gdb.PARAM_BOOLEAN)" "" \
+	"      self.value = True" "" \
+	"test_none_set_show_param = NoneSetShowParam('print test-none-set-show-param')" ""\
+	"end"
+
+    # Setting the set_doc/show_doc string to None (or any non-string
+    # value) means GDB will use a suitable default string.
+    gdb_test "help set print test-none-set-show-param" \
+	[multi_line \
+	     "^Set the current value of 'print test-none-set-show-param'\\." \
+	     "This command is not documented\\."]
+
+    gdb_test "help show print test-none-set-show-param" \
+	[multi_line \
+	     "^Show the current value of 'print test-none-set-show-param'\\." \
+	     "This command is not documented\\."]
+}
+
 # Test deprecated API. Do not use in your own implementations.
 proc_with_prefix test_deprecated_api_parameter { } {
     clean_restart
@@ -716,6 +801,8 @@
 test_file_parameter
 test_undocumented_parameter
 test_really_undocumented_parameter
+test_empty_doc_parameter
+test_empty_set_show_doc_parameter
 test_deprecated_api_parameter
 test_gdb_parameter
 test_integer_parameter
