A working version of the 'args' command (it prints the current values
of the variables known to hold arguments, but that's as close as I can
get, and generally it's close enough).
diff --git a/Lib/pdb.py b/Lib/pdb.py
index 0dc15a2..80aa54b 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -201,10 +201,17 @@
 	do_q = do_quit
 	
 	def do_args(self, arg):
-		if self.curframe.f_locals.has_key('__args__'):
-			print `self.curframe.f_locals['__args__']`
-		else:
-			print '*** No arguments?!'
+		f = self.curframe
+		co = f.f_code
+		dict = f.f_locals
+		n = co.co_argcount
+		if co.co_flags & 4: n = n+1
+		if co.co_flags & 8: n = n+1
+		for i in range(n):
+			name = co.co_varnames[i]
+			print name, '=',
+			if dict.has_key(name): print dict[name]
+			else: print "*** undefined ***"
 	do_a = do_args
 	
 	def do_retval(self, arg):
@@ -432,7 +439,7 @@
 
 	def help_a(self):
 		print """a(rgs)
-	Print the argument list of the current function."""
+	Print the arguments of the current function."""
 
 	def help_p(self):
 		print """p expression