public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug python/11900] New: OSError exception when running 'python help(gdb)'
@ 2010-08-10 16:01 xdegaye at gmail dot com
  2010-08-17 19:47 ` [Bug python/11900] " tromey at redhat dot com
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: xdegaye at gmail dot com @ 2010-08-10 16:01 UTC (permalink / raw)
  To: gdb-prs

When sourcing 'gdb-help.py' (see below), python throws OSError when
running 'help(gdb)', see the output in 'logfile' below. This does not
occur after deleting gdb.__path__.

Run the following command to reproduce the bug:

    gdb -batch-silent -x cmd.gdb

I am not sure if gdb is a package. If gdb is a package, then
__path__[0] should be an existing directory.

If gdb is a module and not a package, it must not have a __path__
attribute. Applying the 'gdb-help.diff' patch (see below) fixes the
bug.



===   cmd.gdb   =======================================================
set logging file logfile
set logging overwrite on
set logging on
source gdb-help.py


===   gdb-help.py   ===================================================
print 'gdb.__path__: ',  gdb.__path__
try:
    help(gdb)
except OSError, error:
    print OSError, error

print '***retry after deleting the __path__ attribute***'
del gdb.__path__
help(gdb)

import sys
sys.exit()


===   gdb-help.diff   =================================================
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 7346fba..943efb5 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -763,7 +763,6 @@ sys.path.insert(0, gdb.PYTHONDIR)\n\
 # The gdb module is implemented in C rather than in Python.  As a result,\n\
 # the associated __init.py__ script is not not executed by default when\n\
 # the gdb module gets imported.  Execute that script manually if it exists.\n\
-gdb.__path__ = [gdb.PYTHONDIR + '/gdb']\n\
 from os.path import exists\n\
 ipy = gdb.PYTHONDIR + '/gdb/__init__.py'\n\
 if exists (ipy):\n\


===   logfile   =======================================================
gdb.__path__: 
['/home/xavier/src/packages/gdb/gdb-git/gdb/install/share/gdb/python/gdb']
exceptions.OSError [Errno 2] No such file or directory:
'/home/xavier/src/packages/gdb/gdb-git/gdb/install/share/gdb/python/gdb'
***retry after deleting the __path__ attribute***
Help on module gdb:

NAME
    gdb

FILE
    (built-in)

CLASSES
    __builtin__.object
        Block
        BlockIterator
        Breakpoint
        Command
        Field
        Frame
        Function
        Inferior
        InferiorThread
        Membuf
        Objfile
        Parameter
        Progspace
        Symbol
        Symtab
        Symtab_and_line
        Type
        Value
    exceptions.Exception
        GdbError
    
    class Block(__builtin__.object)
     |  GDB block object
     |  
     |  Methods defined here:
     |  
     |  __iter__(...)
     |      x.__iter__() <==> iter(x)
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
     |  
     |  end = <attribute 'end' of 'gdb.Block' objects>
     |      End address of the block.
     |  
     |  function = <attribute 'function' of 'gdb.Block' objects>
     |      Symbol that names the block, or None.
     |  
     |  start = <attribute 'start' of 'gdb.Block' objects>
     |      Start address of the block.
     |  
     |  superblock = <attribute 'superblock' of 'gdb.Block' objects>
     |      Block containing the block, or None.
    
    class BlockIterator(__builtin__.object)
     |  GDB block syms iterator object
     |  
     |  Methods defined here:
     |  
     |  __iter__(...)
     |      x.__iter__() <==> iter(x)
     |  
     |  next(...)
     |      x.next() -> the next value, or raise StopIteration
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
    
    class Breakpoint(__builtin__.object)
     |  GDB breakpoint object
     |  
     |  Methods defined here:
     |  
     |  is_valid(...)
     |      Return true if this breakpoint is valid, false if not.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
     |  
     |  commands = <attribute 'commands' of 'gdb.Breakpoint' objects>
     |      Commands of the breakpoint, as specified by the user.
     |  
     |  condition = <attribute 'condition' of 'gdb.Breakpoint' objects>
     |      Condition of the breakpoint, as specified by the user,or None if no
condition set.
     |  
     |  enabled = <attribute 'enabled' of 'gdb.Breakpoint' objects>
     |      Boolean telling whether the breakpoint is enabled.
     |  
     |  expression = <attribute 'expression' of 'gdb.Breakpoint' objects>
     |      Expression of the breakpoint, as specified by the user.
     |  
     |  hit_count = <attribute 'hit_count' of 'gdb.Breakpoint' objects>
     |      Number of times the breakpoint has been hit.
     |      Can be set to zero to clear the count. No other value is valid
     |      when setting this property.
     |  
     |  ignore_count = <attribute 'ignore_count' of 'gdb.Breakpoint' objects>
     |      Number of times this breakpoint should be automatically continued.
     |  
     |  location = <attribute 'location' of 'gdb.Breakpoint' objects>
     |      Location of the breakpoint, as specified by the user.
     |  
     |  number = <attribute 'number' of 'gdb.Breakpoint' objects>
     |      Breakpoint's number assigned by GDB.
     |  
     |  silent = <attribute 'silent' of 'gdb.Breakpoint' objects>
     |      Boolean telling whether the breakpoint is silent.
     |  
     |  task = <attribute 'task' of 'gdb.Breakpoint' objects>
     |      Thread ID for the breakpoint.
     |      If the value is a task ID (integer), then this is an Ada
task-specific breakpoint.
     |      If the value is None, then this breakpoint is not task-specific.
     |      No other type of value can be used.
     |  
     |  thread = <attribute 'thread' of 'gdb.Breakpoint' objects>
     |      Thread ID for the breakpoint.
     |      If the value is a thread ID (integer), then this is a
thread-specific breakpoint.
     |      If the value is None, then this breakpoint is not thread-specific.
     |      No other type of value can be used.
     |  
     |  type = <attribute 'type' of 'gdb.Breakpoint' objects>
     |      Type of breakpoint.
    
    class Command(__builtin__.object)
     |  GDB command object
     |  
     |  Methods defined here:
     |  
     |  __init__(...)
     |      x.__init__(...) initializes x; see x.__class__.__doc__ for signature
     |  
     |  dont_repeat(...)
     |      Prevent command repetition when user enters empty line.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
    
    class Field(__builtin__.object)
     |  GDB field object
    
    class Frame(__builtin__.object)
     |  GDB frame object
     |  
     |  Methods defined here:
     |  
     |  __eq__(...)
     |      x.__eq__(y) <==> x==y
     |  
     |  __ge__(...)
     |      x.__ge__(y) <==> x>=y
     |  
     |  __gt__(...)
     |      x.__gt__(y) <==> x>y
     |  
     |  __le__(...)
     |      x.__le__(y) <==> x<=y
     |  
     |  __lt__(...)
     |      x.__lt__(y) <==> x<y
     |  
     |  __ne__(...)
     |      x.__ne__(y) <==> x!=y
     |  
     |  __str__(...)
     |      x.__str__() <==> str(x)
     |  
     |  block(...)
     |      block () -> gdb.Block.
     |      Return the frame's code block.
     |  
     |  find_sal(...)
     |      find_sal () -> gdb.Symtab_and_line.
     |      Return the frame's symtab and line.
     |  
     |  function(...)
     |      function () -> gdb.Symbol.
     |      Returns the symbol for the function corresponding to this frame.
     |  
     |  is_valid(...)
     |      is_valid () -> Boolean.
     |      Return true if this frame is valid, false if not.
     |  
     |  name(...)
     |      name () -> String.
     |      Return the function name of the frame, or None if it can't be
determined.
     |  
     |  newer(...)
     |      newer () -> gdb.Frame.
     |      Return the frame called by this frame.
     |  
     |  older(...)
     |      older () -> gdb.Frame.
     |      Return the frame that called this frame.
     |  
     |  pc(...)
     |      pc () -> Long.
     |      Return the frame's resume address.
     |  
     |  read_var(...)
     |      read_var (variable) -> gdb.Value.
     |      Return the value of the variable in this frame.
     |  
     |  select(...)
     |      Select this frame as the user's current frame.
     |  
     |  type(...)
     |      type () -> Integer.
     |      Return the type of the frame.
     |  
     |  unwind_stop_reason(...)
     |      unwind_stop_reason () -> Integer.
     |      Return the reason why it's not possible to find frames older than this.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
    
    class Function(__builtin__.object)
     |  GDB function object
     |  
     |  Methods defined here:
     |  
     |  __init__(...)
     |      x.__init__(...) initializes x; see x.__class__.__doc__ for signature
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
    
    class GdbError(exceptions.Exception)
     |  Methods inherited from exceptions.Exception:
     |  
     |  __getitem__(...)
     |  
     |  __init__(...)
     |  
     |  __str__(...)
    
    class Inferior(__builtin__.object)
     |  GDB inferior object
     |  
     |  Methods defined here:
     |  
     |  read_memory(...)
     |      read_memory (address, length) -> buffer
     |      Return a buffer object for reading from the inferior's memory.
     |  
     |  search_memory(...)
     |      search_memory (address, length, pattern) -> long
     |      Return a long with the address of a match, or None.
     |  
     |  threads(...)
     |      Return all the threads of this inferior.
     |  
     |  write_memory(...)
     |      write_memory (address, buffer [, length])
     |      Write the given buffer object to the inferior's memory.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  num = <attribute 'num' of 'gdb.Inferior' objects>
     |      ID of inferior, as assigned by GDB.
     |  
     |  pid = <attribute 'pid' of 'gdb.Inferior' objects>
     |      PID of inferior, as assigned by the OS.
     |  
     |  was_attached = <attribute 'was_attached' of 'gdb.Inferior' objects>
     |      True if the inferior was created using 'attach'.
    
    class InferiorThread(__builtin__.object)
     |  GDB thread object
     |  
     |  Methods defined here:
     |  
     |  is_exited(...)
     |      is_exited () -> Boolean
     |      Return whether the thread is exited.
     |  
     |  is_running(...)
     |      is_running () -> Boolean
     |      Return whether the thread is running.
     |  
     |  is_stopped(...)
     |      is_stopped () -> Boolean
     |      Return whether the thread is stopped.
     |  
     |  switch(...)
     |      switch ()
     |      Makes this the GDB selected thread.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  num = <attribute 'num' of 'gdb.InferiorThread' objects>
     |      ID of the thread, as assigned by GDB.
     |  
     |  ptid = <attribute 'ptid' of 'gdb.InferiorThread' objects>
     |      ID of the thread, as assigned by the OS.
    
    class Membuf(__builtin__.object)
     |  GDB memory buffer object
     |  
     |  Methods defined here:
     |  
     |  __str__(...)
     |      x.__str__() <==> str(x)
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
    
    class Objfile(__builtin__.object)
     |  GDB objfile object
     |  
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
     |  
     |  filename = <attribute 'filename' of 'gdb.Objfile' objects>
     |      The objfile's filename, or None.
     |  
     |  pretty_printers = <attribute 'pretty_printers' of 'gdb.Objfile' object...
     |      Pretty printers.
    
    class Parameter(__builtin__.object)
     |  GDB parameter object
     |  
     |  Methods defined here:
     |  
     |  __delattr__(...)
     |      x.__delattr__('name') <==> del x.name
     |  
     |  __getattribute__(...)
     |      x.__getattribute__('name') <==> x.name
     |  
     |  __init__(...)
     |      x.__init__(...) initializes x; see x.__class__.__doc__ for signature
     |  
     |  __setattr__(...)
     |      x.__setattr__('name', value) <==> x.name = value
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
    
    class Progspace(__builtin__.object)
     |  GDB progspace object
     |  
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
     |  
     |  filename = <attribute 'filename' of 'gdb.Progspace' objects>
     |      The progspace's main filename, or None.
     |  
     |  pretty_printers = <attribute 'pretty_printers' of 'gdb.Progspace' obje...
     |      Pretty printers.
    
    class Symbol(__builtin__.object)
     |  GDB symbol object
     |  
     |  Methods defined here:
     |  
     |  __str__(...)
     |      x.__str__() <==> str(x)
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  addr_class = <attribute 'addr_class' of 'gdb.Symbol' objects>
     |      Address class of the symbol.
     |  
     |  is_argument = <attribute 'is_argument' of 'gdb.Symbol' objects>
     |      True if the symbol is an argument of a function.
     |  
     |  is_constant = <attribute 'is_constant' of 'gdb.Symbol' objects>
     |      True if the symbol is a constant.
     |  
     |  is_function = <attribute 'is_function' of 'gdb.Symbol' objects>
     |      True if the symbol is a function or method.
     |  
     |  is_variable = <attribute 'is_variable' of 'gdb.Symbol' objects>
     |      True if the symbol is a variable.
     |  
     |  linkage_name = <attribute 'linkage_name' of 'gdb.Symbol' objects>
     |      Name of the symbol, as used by the linker (i.e., may be mangled).
     |  
     |  name = <attribute 'name' of 'gdb.Symbol' objects>
     |      Name of the symbol, as it appears in the source code.
     |  
     |  print_name = <attribute 'print_name' of 'gdb.Symbol' objects>
     |      Name of the symbol in a form suitable for output.
     |      This is either name or linkage_name, depending on whether the user
asked GDB
     |      to display demangled or mangled names.
     |  
     |  symtab = <attribute 'symtab' of 'gdb.Symbol' objects>
     |      Symbol table in which the symbol appears.
    
    class Symtab(__builtin__.object)
     |  GDB symtab object
     |  
     |  Methods defined here:
     |  
     |  __str__(...)
     |      x.__str__() <==> str(x)
     |  
     |  fullname(...)
     |      fullname () -> String.
     |      Return the symtab's full source filename.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
     |  
     |  filename = <attribute 'filename' of 'gdb.Symtab' objects>
     |      The symbol table's source filename.
     |  
     |  objfile = <attribute 'objfile' of 'gdb.Symtab' objects>
     |      The symtab's objfile.
    
    class Symtab_and_line(__builtin__.object)
     |  GDB symtab_and_line object
     |  
     |  Methods defined here:
     |  
     |  __str__(...)
     |      x.__str__() <==> str(x)
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
     |  
     |  line = <attribute 'line' of 'gdb.Symtab_and_line' objects>
     |      Return the symtab_and_line's line.
     |  
     |  pc = <attribute 'pc' of 'gdb.Symtab_and_line' objects>
     |      Return the symtab_and_line's pc.
     |  
     |  symtab = <attribute 'symtab' of 'gdb.Symtab_and_line' objects>
     |      Symtab object.
    
    class Type(__builtin__.object)
     |  GDB type object
     |  
     |  Methods defined here:
     |  
     |  __str__(...)
     |      x.__str__() <==> str(x)
     |  
     |  const(...)
     |      const () -> Type
     |      Return a const variant of this type.
     |  
     |  fields(...)
     |      field () -> list
     |      Return a sequence holding all the fields of this type.
     |      Each field is a dictionary.
     |  
     |  pointer(...)
     |      pointer () -> Type
     |      Return a type of pointer to this type.
     |  
     |  range(...)
     |      range () -> tuple
     |      Return a tuple containing the lower and upper range for this type.
     |  
     |  reference(...)
     |      reference () -> Type
     |      Return a type of reference to this type.
     |  
     |  strip_typedefs(...)
     |      strip_typedefs () -> Type
     |      Return a type formed by stripping this type of all typedefs.
     |  
     |  target(...)
     |      target () -> Type
     |      Return the target type of this type.
     |  
     |  template_argument(...)
     |      template_argument (arg, [block]) -> Type
     |      Return the type of a template argument.
     |  
     |  unqualified(...)
     |      unqualified () -> Type
     |      Return a variant of this type without const or volatile attributes.
     |  
     |  volatile(...)
     |      volatile () -> Type
     |      Return a volatile variant of this type
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  code = <attribute 'code' of 'gdb.Type' objects>
     |      The code for this type.
     |  
     |  sizeof = <attribute 'sizeof' of 'gdb.Type' objects>
     |      The size of this type, in bytes.
     |  
     |  tag = <attribute 'tag' of 'gdb.Type' objects>
     |      The tag name for this type, or None.
    
    class Value(__builtin__.object)
     |  GDB value object
     |  
     |  Methods defined here:
     |  
     |  __abs__(...)
     |      x.__abs__() <==> abs(x)
     |  
     |  __add__(...)
     |      x.__add__(y) <==> x+y
     |  
     |  __and__(...)
     |      x.__and__(y) <==> x&y
     |  
     |  __call__(...)
     |      x.__call__(...) <==> x(...)
     |  
     |  __delitem__(...)
     |      x.__delitem__(y) <==> del x[y]
     |  
     |  __div__(...)
     |      x.__div__(y) <==> x/y
     |  
     |  __eq__(...)
     |      x.__eq__(y) <==> x==y
     |  
     |  __float__(...)
     |      x.__float__() <==> float(x)
     |  
     |  __ge__(...)
     |      x.__ge__(y) <==> x>=y
     |  
     |  __getitem__(...)
     |      x.__getitem__(y) <==> x[y]
     |  
     |  __gt__(...)
     |      x.__gt__(y) <==> x>y
     |  
     |  __hash__(...)
     |      x.__hash__() <==> hash(x)
     |  
     |  __int__(...)
     |      x.__int__() <==> int(x)
     |  
     |  __invert__(...)
     |      x.__invert__() <==> ~x
     |  
     |  __le__(...)
     |      x.__le__(y) <==> x<=y
     |  
     |  __len__(...)
     |      x.__len__() <==> len(x)
     |  
     |  __long__(...)
     |      x.__long__() <==> long(x)
     |  
     |  __lshift__(...)
     |      x.__lshift__(y) <==> x<<y
     |  
     |  __lt__(...)
     |      x.__lt__(y) <==> x<y
     |  
     |  __mod__(...)
     |      x.__mod__(y) <==> x%y
     |  
     |  __mul__(...)
     |      x.__mul__(y) <==> x*y
     |  
     |  __ne__(...)
     |      x.__ne__(y) <==> x!=y
     |  
     |  __neg__(...)
     |      x.__neg__() <==> -x
     |  
     |  __nonzero__(...)
     |      x.__nonzero__() <==> x != 0
     |  
     |  __or__(...)
     |      x.__or__(y) <==> x|y
     |  
     |  __pos__(...)
     |      x.__pos__() <==> +x
     |  
     |  __pow__(...)
     |      x.__pow__(y[, z]) <==> pow(x, y[, z])
     |  
     |  __radd__(...)
     |      x.__radd__(y) <==> y+x
     |  
     |  __rand__(...)
     |      x.__rand__(y) <==> y&x
     |  
     |  __rdiv__(...)
     |      x.__rdiv__(y) <==> y/x
     |  
     |  __rlshift__(...)
     |      x.__rlshift__(y) <==> y<<x
     |  
     |  __rmod__(...)
     |      x.__rmod__(y) <==> y%x
     |  
     |  __rmul__(...)
     |      x.__rmul__(y) <==> y*x
     |  
     |  __ror__(...)
     |      x.__ror__(y) <==> y|x
     |  
     |  __rpow__(...)
     |      y.__rpow__(x[, z]) <==> pow(x, y[, z])
     |  
     |  __rrshift__(...)
     |      x.__rrshift__(y) <==> y>>x
     |  
     |  __rshift__(...)
     |      x.__rshift__(y) <==> x>>y
     |  
     |  __rsub__(...)
     |      x.__rsub__(y) <==> y-x
     |  
     |  __rxor__(...)
     |      x.__rxor__(y) <==> y^x
     |  
     |  __setitem__(...)
     |      x.__setitem__(i, y) <==> x[i]=y
     |  
     |  __str__(...)
     |      x.__str__() <==> str(x)
     |  
     |  __sub__(...)
     |      x.__sub__(y) <==> x-y
     |  
     |  __xor__(...)
     |      x.__xor__(y) <==> x^y
     |  
     |  cast(...)
     |      Cast the value to the supplied type.
     |  
     |  dereference(...)
     |      Dereferences the value.
     |  
     |  lazy_string(...)
     |      lazy_string ([encoding]  [, length]) -> lazy_string
     |      Return a lazy string representation of the value.
     |  
     |  string(...)
     |      string ([encoding] [, errors] [, length]) -> string
     |      Return Unicode string representation of the value.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
     |  
     |  address = <attribute 'address' of 'gdb.Value' objects>
     |      The address of the value.
     |  
     |  is_optimized_out = <attribute 'is_optimized_out' of 'gdb.Value' object...
     |      Boolean telling whether the value is optimized out (i.e., not
available).
     |  
     |  type = <attribute 'type' of 'gdb.Value' objects>
     |      Type of the value.

FUNCTIONS
    block_for_pc(...)
        Return the block containing the given pc value, or None.
    
    breakpoints(...)
        Return a tuple of all breakpoint objects
    
    current_objfile(...)
        Return the current Objfile being loaded, or None.
    
    current_progspace(...)
        Return the current Progspace.
    
    default_visualizer(...)
        Find the default visualizer for a Value.
    
    execute(...)
        Execute a gdb command
    
    flush(...)
        Flush gdb's filtered stdout stream.
    
    frame_stop_reason_string(...)
        stop_reason_string (Integer) -> String.
        Return a string explaining unwind stop reason.
    
    history(...)
        Get a value from history
    
    inferiors(...)
        inferiors () -> (gdb.Inferior, ...).
        Return a tuple containing all inferiors.
    
    lookup_symbol(...)
        lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)
        Return a tuple with the symbol corresponding to the given name (or None) and
        a boolean indicating if name is a field of the current implied argument
        `this' (when the current language is object-oriented).
    
    lookup_type(...)
        lookup_type (name [, block]) -> type
        Return a Type corresponding to the given name.
    
    objfiles(...)
        Return a sequence of all loaded objfiles.
    
    parameter(...)
        Return a gdb parameter's value
    
    parse_and_eval(...)
        parse_and_eval (String) -> Value.
        Parse String as an expression, evaluate it, and return the result as a
Value.
    
    progspaces(...)
        Return a sequence of all progspaces.
    
    selected_frame(...)
        selected_frame () -> gdb.Frame.
        Return the selected frame object.
    
    selected_thread(...)
        selected_thread () -> gdb.InferiorThread.
        Return the selected thread object.
    
    string_to_argv(...)
        string_to_argv (String) -> Array.
        Parse String and return an argv-like array.
        Arguments are separate by spaces and may be quoted.
    
    target_charset(...)
        target_charset () -> string.
        Return the name of the current target charset.
    
    target_wide_charset(...)
        target_wide_charset () -> string.
        Return the name of the current target wide charset.
    
    write(...)
        Write a string using gdb's filtered stream.

DATA
    BP_ACCESS_WATCHPOINT = 8
    BP_BREAKPOINT = 1
    BP_HARDWARE_WATCHPOINT = 6
    BP_NONE = 0
    BP_READ_WATCHPOINT = 7
    BP_WATCHPOINT = 5
    COMMAND_BREAKPOINTS = 6
    COMMAND_DATA = 1
    COMMAND_FILES = 3
    COMMAND_MAINTENANCE = 11
    COMMAND_NONE = -1
    COMMAND_OBSCURE = 10
    COMMAND_RUNNING = 0
    COMMAND_STACK = 2
    COMMAND_STATUS = 5
    COMMAND_SUPPORT = 4
    COMMAND_TRACEPOINTS = 7
    COMPLETE_COMMAND = 3
    COMPLETE_FILENAME = 1
    COMPLETE_LOCATION = 2
    COMPLETE_NONE = 0
    COMPLETE_SYMBOL = 4
    DUMMY_FRAME = 1
    FRAME_UNWIND_FIRST_ERROR = 2
    FRAME_UNWIND_INNER_ID = 3
    FRAME_UNWIND_NO_REASON = 0
    FRAME_UNWIND_NO_SAVED_PC = 5
    FRAME_UNWIND_NULL_ID = 1
    FRAME_UNWIND_SAME_ID = 4
    HOST_CONFIG = 'x86_64-unknown-linux-gnu'
    NORMAL_FRAME = 0
    PARAM_AUTO_BOOLEAN = 1
    PARAM_BOOLEAN = 0
    PARAM_ENUM = 10
    PARAM_FILENAME = 7
    PARAM_INTEGER = 3
    PARAM_OPTIONAL_FILENAME = 6
    PARAM_STRING = 4
    PARAM_STRING_NOESCAPE = 5
    PARAM_UINTEGER = 2
    PARAM_ZINTEGER = 8
    PYTHONDIR = '/home/xavier/src/packages/gdb/gdb-git/gdb/install/share/g...
    SENTINEL_FRAME = 5
    SIGTRAMP_FRAME = 3
    SYMBOL_FUNCTIONS_DOMAIN = 5
    SYMBOL_LABEL_DOMAIN = 3
    SYMBOL_LOC_ARG = 4
    SYMBOL_LOC_BLOCK = 10
    SYMBOL_LOC_COMPUTED = 14
    SYMBOL_LOC_CONST = 1
    SYMBOL_LOC_CONST_BYTES = 11
    SYMBOL_LOC_LABEL = 9
    SYMBOL_LOC_LOCAL = 7
    SYMBOL_LOC_OPTIMIZED_OUT = 13
    SYMBOL_LOC_REF_ARG = 5
    SYMBOL_LOC_REGISTER = 3
    SYMBOL_LOC_REGPARM_ADDR = 6
    SYMBOL_LOC_STATIC = 2
    SYMBOL_LOC_TYPEDEF = 8
    SYMBOL_LOC_UNDEF = 0
    SYMBOL_LOC_UNRESOLVED = 12
    SYMBOL_STRUCT_DOMAIN = 2
    SYMBOL_TYPES_DOMAIN = 6
    SYMBOL_UNDEF_DOMAIN = 0
    SYMBOL_VARIABLES_DOMAIN = 4
    SYMBOL_VAR_DOMAIN = 1
    TARGET_CONFIG = 'x86_64-unknown-linux-gnu'
    TYPE_CODE_ARRAY = 2
    TYPE_CODE_BITSTRING = 14
    TYPE_CODE_BOOL = 21
    TYPE_CODE_CHAR = 20
    TYPE_CODE_COMPLEX = 22
    TYPE_CODE_DECFLOAT = 25
    TYPE_CODE_ENUM = 5
    TYPE_CODE_ERROR = 15
    TYPE_CODE_FLAGS = 6
    TYPE_CODE_FLT = 9
    TYPE_CODE_FUNC = 7
    TYPE_CODE_INT = 8
    TYPE_CODE_INTERNAL_FUNCTION = 27
    TYPE_CODE_MEMBERPTR = 18
    TYPE_CODE_METHOD = 16
    TYPE_CODE_METHODPTR = 17
    TYPE_CODE_NAMESPACE = 24
    TYPE_CODE_PTR = 1
    TYPE_CODE_RANGE = 12
    TYPE_CODE_REF = 19
    TYPE_CODE_SET = 11
    TYPE_CODE_STRING = 13
    TYPE_CODE_STRUCT = 3
    TYPE_CODE_TYPEDEF = 23
    TYPE_CODE_UNION = 4
    TYPE_CODE_VOID = 10
    VERSION = '7.2.50.20100810-cvs'
    WP_ACCESS = 2
    WP_READ = 1
    WP_WRITE = 0
    pretty_printers = []

=======================================================================

-- 
           Summary: OSError exception when running 'python help(gdb)'
           Product: gdb
           Version: 7.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: python
        AssignedTo: unassigned at sourceware dot org
        ReportedBy: xdegaye at gmail dot com
                CC: gdb-prs at sourceware dot org
 GCC build triplet: GNU gdb (GDB) 7.2.50.20100810-cvs


http://sourceware.org/bugzilla/show_bug.cgi?id=11900

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug python/11900] OSError exception when running 'python help(gdb)'
  2010-08-10 16:01 [Bug python/11900] New: OSError exception when running 'python help(gdb)' xdegaye at gmail dot com
@ 2010-08-17 19:47 ` tromey at redhat dot com
  2010-08-18 10:50 ` xdegaye at gmail dot com
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: tromey at redhat dot com @ 2010-08-17 19:47 UTC (permalink / raw)
  To: gdb-prs


------- Additional Comments From tromey at redhat dot com  2010-08-17 19:47 -------
Hm, this works for me even though that directory does not exist.
Maybe this is dependent on the Python version?

In any case I think we can easily fix this by having "make install"
create the directory.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tromey at redhat dot com


http://sourceware.org/bugzilla/show_bug.cgi?id=11900

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug python/11900] OSError exception when running 'python help(gdb)'
  2010-08-10 16:01 [Bug python/11900] New: OSError exception when running 'python help(gdb)' xdegaye at gmail dot com
  2010-08-17 19:47 ` [Bug python/11900] " tromey at redhat dot com
@ 2010-08-18 10:50 ` xdegaye at gmail dot com
  2010-08-18 20:33 ` tromey at redhat dot com
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: xdegaye at gmail dot com @ 2010-08-18 10:50 UTC (permalink / raw)
  To: gdb-prs


------- Additional Comments From xdegaye at gmail dot com  2010-08-18 10:50 -------
(In reply to comment #1)
> Hm, this works for me even though that directory does not exist.
> Maybe this is dependent on the Python version?

The bug can be reproduced on Python 2.4.6.
The bug cannot be reproduced on Python 2.5.2.



-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=11900

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug python/11900] OSError exception when running 'python help(gdb)'
  2010-08-10 16:01 [Bug python/11900] New: OSError exception when running 'python help(gdb)' xdegaye at gmail dot com
  2010-08-17 19:47 ` [Bug python/11900] " tromey at redhat dot com
  2010-08-18 10:50 ` xdegaye at gmail dot com
@ 2010-08-18 20:33 ` tromey at redhat dot com
  2010-08-18 21:30 ` xdegaye at gmail dot com
  2010-08-18 22:58 ` tromey at redhat dot com
  4 siblings, 0 replies; 6+ messages in thread
From: tromey at redhat dot com @ 2010-08-18 20:33 UTC (permalink / raw)
  To: gdb-prs


------- Additional Comments From tromey at redhat dot com  2010-08-18 20:33 -------
Created an attachment (id=4939)
 --> (http://sourceware.org/bugzilla/attachment.cgi?id=4939&action=view)
proposed fix

Please try the attached patch.
It just arranges for the install directory to be created.
If this works for you, I will check it in.

-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=11900

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug python/11900] OSError exception when running 'python help(gdb)'
  2010-08-10 16:01 [Bug python/11900] New: OSError exception when running 'python help(gdb)' xdegaye at gmail dot com
                   ` (2 preceding siblings ...)
  2010-08-18 20:33 ` tromey at redhat dot com
@ 2010-08-18 21:30 ` xdegaye at gmail dot com
  2010-08-18 22:58 ` tromey at redhat dot com
  4 siblings, 0 replies; 6+ messages in thread
From: xdegaye at gmail dot com @ 2010-08-18 21:30 UTC (permalink / raw)
  To: gdb-prs


------- Additional Comments From xdegaye at gmail dot com  2010-08-18 21:30 -------

Thanks, the patch fixes the bug on python 2.4.6:

build$ ../install/bin/gdb
GNU gdb (GDB) 7.2.50.20100818-cvs
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) python import sys; print sys.version
2.4.6 (#1, Oct 23 2009, 22:40:37) 
[GCC 4.3.2]
(gdb) python help(gdb)
Help on package gdb:

NAME
    gdb

FILE
    (built-in)

PACKAGE CONTENTS


CLASSES
    __builtin__.object
        Block
        BlockIterator
        Breakpoint
        ...



-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=11900

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug python/11900] OSError exception when running 'python help(gdb)'
  2010-08-10 16:01 [Bug python/11900] New: OSError exception when running 'python help(gdb)' xdegaye at gmail dot com
                   ` (3 preceding siblings ...)
  2010-08-18 21:30 ` xdegaye at gmail dot com
@ 2010-08-18 22:58 ` tromey at redhat dot com
  4 siblings, 0 replies; 6+ messages in thread
From: tromey at redhat dot com @ 2010-08-18 22:58 UTC (permalink / raw)
  To: gdb-prs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2010-08-18 22:56 -------
Subject: Bug 11900

CVSROOT:	/cvs/src
Module name:	src
Branch: 	gdb_7_2-branch
Changes by:	tromey@sourceware.org	2010-08-18 22:55:57

Modified files:
	gdb            : ChangeLog Makefile.in configure configure.ac 

Log message:
	PR python/11900:
	* configure: Rebuild.
	* configure.ac: Add install-python to CONFIG_INSTALL.
	* Makefile.in (install-python): New.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&only_with_tag=gdb_7_2-branch&r1=1.11973.2.30&r2=1.11973.2.31
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/Makefile.in.diff?cvsroot=src&only_with_tag=gdb_7_2-branch&r1=1.1127.2.1&r2=1.1127.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/configure.diff?cvsroot=src&only_with_tag=gdb_7_2-branch&r1=1.311.2.2&r2=1.311.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/configure.ac.diff?cvsroot=src&only_with_tag=gdb_7_2-branch&r1=1.125.2.2&r2=1.125.2.3


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2010-08-18 22:57 -------
Subject: Bug 11900

CVSROOT:	/cvs/src
Module name:	src
Changes by:	tromey@sourceware.org	2010-08-18 22:57:46

Modified files:
	gdb            : ChangeLog Makefile.in configure configure.ac 

Log message:
	PR python/11900:
	* configure: Rebuild.
	* configure.ac: Add install-python to CONFIG_INSTALL.
	* Makefile.in (install-python): New.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.12096&r2=1.12097
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/Makefile.in.diff?cvsroot=src&r1=1.1130&r2=1.1131
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/configure.diff?cvsroot=src&r1=1.314&r2=1.315
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/configure.ac.diff?cvsroot=src&r1=1.128&r2=1.129


------- Additional Comments From tromey at redhat dot com  2010-08-18 22:58 -------
I checked in the fix.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|7.1                         |7.2


http://sourceware.org/bugzilla/show_bug.cgi?id=11900

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-08-18 22:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-10 16:01 [Bug python/11900] New: OSError exception when running 'python help(gdb)' xdegaye at gmail dot com
2010-08-17 19:47 ` [Bug python/11900] " tromey at redhat dot com
2010-08-18 10:50 ` xdegaye at gmail dot com
2010-08-18 20:33 ` tromey at redhat dot com
2010-08-18 21:30 ` xdegaye at gmail dot com
2010-08-18 22:58 ` tromey at redhat dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).