'Scrape a value from the inferior process, and try to represent it
within the gdb process, whilst (hopefully) avoiding crashes when
the remote data is corrupt.
Derived classes will override this.
For example, a PyIntObject* with ob_ival 42 in the inferior process
should result in an int(42) in this process.
visited: a set of all gdb.Value pyobject pointers already visited
whilst generating this value (to guard against infinite recursion when
visiting object graphs with loops).  Analogous to Py_ReprEnter and
Py_ReprLeave'

def proxyval(self, visited):

    class FakeRepr(object, ):
        "\n                                                Class    representing    a    non-descript    PyObject*    value    in    the    inferior\n                                                process    for    when    we    don't    have    a    custom    scraper,    intended    to    have\n                                                a    sane    repr().\n                                                "
        def __init__(self, tp_name, address):
            self.tp_name = tp_name
            self.address = address
        def __repr__(self):
            if (self.address == 0):
                return '0x0'
            return ('<%s    at    remote    0x%x>' % (self.tp_name, self.address))
    return FakeRepr(self.safe_tp_name(), int(self._gdbval))
