diff --git a/Lib/cgitb.py b/Lib/cgitb.py
index 381fb7b..b39fd93 100644
--- a/Lib/cgitb.py
+++ b/Lib/cgitb.py
@@ -42,6 +42,14 @@
         return 'local', locals[name]
     if name in frame.f_globals:
         return 'global', frame.f_globals[name]
+    if '__builtins__' in frame.f_globals:
+        builtins = frame.f_globals['__builtins__']
+        if type(builtins) is type({}):
+            if name in builtins:
+                return 'builtin', builtins[name]
+        else:
+            if hasattr(builtins, name):
+                return 'builtin', getattr(builtins, name)
     return None, __UNDEF__
 
 def scanvars(reader, frame, locals):
@@ -118,9 +126,12 @@
             if name in done: continue
             done[name] = 1
             if value is not __UNDEF__:
-                if where == 'global': name = '<em>global</em> ' + strong(name)
-                elif where == 'local': name = strong(name)
-                else: name = where + strong(name.split('.')[-1])
+                if where in ['global', 'builtin']:
+                    name = ('<em>%s</em> ' % where) + strong(name)
+                elif where == 'local':
+                    name = strong(name)
+                else:
+                    name = where + strong(name.split('.')[-1])
                 dump.append('%s&nbsp;= %s' % (name, pydoc.html.repr(value)))
             else:
                 dump.append(name + ' <em>undefined</em>')
@@ -133,6 +144,7 @@
     exception = ['<p>%s: %s' % (strong(str(etype)), str(evalue))]
     if type(evalue) is types.InstanceType:
         for name in dir(evalue):
+            if name[:1] == '_': continue
             value = pydoc.html.repr(getattr(evalue, name))
             exception.append('\n<br>%s%s&nbsp;=\n%s' % (indent, name, value))
 
