[Python-checkins] [3.6] bpo-29673: fix gdb scripts pystack and pystackv (GH-6126) (GH-6400)

Ned Deily webhook-mailer at python.org
Fri Apr 6 18:15:37 EDT 2018


https://github.com/python/cpython/commit/3468a05f6a7d730a656d254730a3f5b6b7e85983
commit: 3468a05f6a7d730a656d254730a3f5b6b7e85983
branch: 3.6
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: Ned Deily <nad at python.org>
date: 2018-04-06T18:15:34-04:00
summary:

[3.6] bpo-29673: fix gdb scripts pystack and pystackv (GH-6126) (GH-6400)

(cherry picked from commit 3a9ccee0e5dbf7d67f5ab79f6095755969db117c)

Co-authored-by: Marcel Plch <gmarcel.plch at gmail.com>

files:
A Misc/NEWS.d/next/Tools-Demos/2018-03-16-17-25-05.bpo-29673.m8QtaW.rst
M Misc/ACKS
M Misc/gdbinit
M Python/ceval.c

diff --git a/Misc/ACKS b/Misc/ACKS
index ca8eaefc5b46..7eaee80727dc 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1221,6 +1221,7 @@ Zero Piraeus
 Antoine Pitrou
 Jean-François Piéronne
 Oleg Plakhotnyuk
+Marcel Plch
 Remi Pointel
 Jon Poler
 Ariel Poliak
diff --git a/Misc/NEWS.d/next/Tools-Demos/2018-03-16-17-25-05.bpo-29673.m8QtaW.rst b/Misc/NEWS.d/next/Tools-Demos/2018-03-16-17-25-05.bpo-29673.m8QtaW.rst
new file mode 100644
index 000000000000..3d515b3ee4db
--- /dev/null
+++ b/Misc/NEWS.d/next/Tools-Demos/2018-03-16-17-25-05.bpo-29673.m8QtaW.rst
@@ -0,0 +1 @@
+Fix pystackv and pystack gdbinit macros.
diff --git a/Misc/gdbinit b/Misc/gdbinit
index 3b6fe50ef931..bb10bdba799a 100644
--- a/Misc/gdbinit
+++ b/Misc/gdbinit
@@ -36,8 +36,8 @@ define pylocals
     set $_i = 0
     while $_i < f->f_code->co_nlocals
 	if f->f_localsplus + $_i != 0
-	    set $_names = co->co_varnames
-	    set $_name = _PyUnicode_AsString(PyTuple_GetItem($_names, $_i))
+	    set $_names = f->f_code->co_varnames
+	    set $_name = PyUnicode_AsUTF8(PyTuple_GetItem($_names, $_i))
 	    printf "%s:\n", $_name
             pyo f->f_localsplus[$_i]
 	end
@@ -76,8 +76,8 @@ define pyframev
 end
 
 define pyframe
-    set $__fn = _PyUnicode_AsString(co->co_filename)
-    set $__n = _PyUnicode_AsString(co->co_name)
+    set $__fn = PyUnicode_AsUTF8(f->f_code->co_filename)
+    set $__n = PyUnicode_AsUTF8(f->f_code->co_name)
     printf "%s (", $__fn
     lineno
     printf "): %s\n", $__n
@@ -102,7 +102,7 @@ end
 #end
 
 define printframe
-    if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx
+    if $pc > PyEval_EvalFrameEx && $pc < _PyEval_EvalFrameDefault
 	pyframe
     else
         frame
@@ -129,7 +129,7 @@ end
 # print the entire Python call stack
 define pystack
     while $pc < Py_Main || $pc > Py_GetArgcArgv
-        if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx
+        if $pc > PyEval_EvalFrameEx && $pc < _PyEval_EvalFrameDefault
 	    pyframe
         end
         up-silently 1
@@ -140,7 +140,7 @@ end
 # print the entire Python call stack - verbose mode
 define pystackv
     while $pc < Py_Main || $pc > Py_GetArgcArgv
-        if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx
+        if $pc > PyEval_EvalFrameEx && $pc < _PyEval_EvalFrameDefault
 	    pyframev
         end
         up-silently 1
diff --git a/Python/ceval.c b/Python/ceval.c
index 6252e89c9106..646f6a5bea9c 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3888,7 +3888,7 @@ too_many_positional(PyCodeObject *co, Py_ssize_t given, Py_ssize_t defcount,
 }
 
 /* This is gonna seem *real weird*, but if you put some other code between
-   PyEval_EvalFrame() and PyEval_EvalCodeEx() you will need to adjust
+   PyEval_EvalFrame() and _PyEval_EvalFrameDefault() you will need to adjust
    the test in the if statements in Misc/gdbinit (pystack and pystackv). */
 
 static PyObject *



More information about the Python-checkins mailing list