Remove short-circuitying grubbing by using last grubbed buffer.  It's
evil - if the last grubbed buffer didn't happen to be the right one,
you couldn't remedy.

Mainline emacs compat - don't use third arg to buffer-substring (which
was for explicitly identifying the buffer in which to seek the
substring, and which turns out to be unnecessary).
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index 61e4f46..ba4f88a 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -1370,8 +1370,7 @@
                              (max (point-min)
                                   (string-match "^\\([^#]\\|#[^#]\\|#$\\)"
                                                 (buffer-substring (point-min)
-                                                                  (point-max)
-                                                                  funcbuffer))
+                                                                  (point-max)))
                                   ))))))
              (list lineno funcbuffer))
 
@@ -1392,10 +1391,6 @@
   (let ((buffers (buffer-list))
         curbuf
         got)
-    (if (and py-pdbtrack-last-grubbed-buffer
-             (member py-pdbtrack-last-grubbed-buffer buffers))
-        ; Prefer last grubbed buffer by putting it at the front of the list:
-        (setq buffers (cons py-pdbtrack-last-grubbed-buffer buffers)))
     (while (and buffers (not got))
       (setq buf (car buffers)
             buffers (cdr buffers))
@@ -1404,9 +1399,10 @@
                (or (string-match funcname (buffer-name buf))
                    (string-match (concat "^\\s-*\\(def\\|class\\)\\s-+"
                                          funcname "\\s-*(")
-                                 (buffer-substring (point-min buf)
-                                                   (point-max buf)
-                                                   buf))))
+                                 (save-excursion
+                                   (set-buffer buf)
+                                   (buffer-substring (point-min)
+                                                     (point-max))))))
           (setq got buf)))
     (setq py-pdbtrack-last-grubbed-buffer got)))