File tree 2 files changed +21
-2
lines changed
2 files changed +21
-2
lines changed Original file line number Diff line number Diff line change @@ -9,8 +9,13 @@ What's New in Stackless 3.X.X?
9
9
10
10
*Release date: 20XX-XX-XX*
11
11
12
+ - https://bitbucket.org/stackless-dev/stackless/issues/101
13
+ Enhance Tools/gdb/libpython.py to support debugging Stackless Python.
14
+ You can now debug Stackless Python with gdb. Unfortunately gdb still
15
+ does not know about inactive tasklets and their frames.
16
+
12
17
- https://bitbucket.org/stackless-dev/stackless/issues/99
13
- On UNIX like systems you can use the command
18
+ On UNIX like systems you can use the command
14
19
$ make teststackless
15
20
to run the Stackless unit tests. Previously the command required some non
16
21
POSIX commands.
Original file line number Diff line number Diff line change 86
86
87
87
ENCODING = locale .getpreferredencoding ()
88
88
89
+ # name of the evalframeex function. It CPython and Stackless Python
90
+ # use different names
91
+ EVALFRAMEEX_FUNCTION_NAME = None
92
+
89
93
class NullPyObjectPtr (RuntimeError ):
90
94
pass
91
95
@@ -1426,7 +1430,17 @@ def is_python_frame(self):
1426
1430
1427
1431
def is_evalframeex (self ):
1428
1432
'''Is this a PyEval_EvalFrameEx frame?'''
1429
- if self ._gdbframe .name () == 'PyEval_EvalFrameEx' :
1433
+ global EVALFRAMEEX_FUNCTION_NAME
1434
+ if EVALFRAMEEX_FUNCTION_NAME is None :
1435
+ try :
1436
+ gdb .lookup_type ("PyCFrameObject" )
1437
+ # it is Stackless Python
1438
+ EVALFRAMEEX_FUNCTION_NAME = 'PyEval_EvalFrame_value'
1439
+ except gdb .error :
1440
+ # regular CPython
1441
+ EVALFRAMEEX_FUNCTION_NAME = 'PyEval_EvalFrameEx'
1442
+
1443
+ if self ._gdbframe .name () == EVALFRAMEEX_FUNCTION_NAME :
1430
1444
'''
1431
1445
I believe we also need to filter on the inline
1432
1446
struct frame_id.inline_depth, only regarding frames with
You can’t perform that action at this time.
0 commit comments