break sets a breakpoint rather than stopping the loop.
It *appears* a flag is necessary instead.
This was tested in gdb 6.0.
Backport candidate
diff --git a/Misc/gdbinit b/Misc/gdbinit
index ee03cc2..f3cb2ea 100644
--- a/Misc/gdbinit
+++ b/Misc/gdbinit
@@ -46,18 +46,19 @@
# A rewrite of the Python interpreter's line number calculator in GDB's
# command language
define lineno
+ set $__continue = 1
set $__co = f->f_code
set $__lasti = f->f_lasti
set $__sz = ((PyStringObject *)$__co->co_lnotab)->ob_size/2
set $__p = (unsigned char *)((PyStringObject *)$__co->co_lnotab)->ob_sval
set $__li = $__co->co_firstlineno
set $__ad = 0
- while ($__sz-1 >= 0)
+ while ($__sz-1 >= 0 && $__continue)
set $__sz = $__sz - 1
set $__ad = $__ad + *$__p
set $__p = $__p + 1
if ($__ad > $__lasti)
- break
+ set $__continue = 0
end
set $__li = $__li + *$__p
set $__p = $__p + 1