Sjoerd Mullender writes:

I regularly find that pdb sets the breakpoint on the wrong line when I
try to set a breakpoint on a function.  This fixes the problem
somewhat.
The real problem is that pdb tries to parse the Python source code to
find the first executable line.  A better way might be to inspect the
code object, or even have a variable in the code object
co_firstexecutablelineno, but that's too much work.

The patch fixes the problem when the first code line after the def
statement contains the start *and* end of a triple-quoted string.  The
code assumed that the end of a triple-quoted string is not on the same
line as the start, and so it would skip to the end of the *next*
triple-quoted string.
diff --git a/Lib/pdb.py b/Lib/pdb.py
index b897efb..63c7c1d 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -346,6 +346,9 @@
 				if len(line) >= 3:
 					if (line[:3] == '"""'
 					    or line[:3] == "'''"):
+						if line[-3:] == line[:3]:
+							# one-line string
+							continue
 						incomment = line[:3]
 						continue
 				if line[0] != '#': break