Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
cython
Commits
117ef042
Commit
117ef042
authored
Dec 14, 2010
by
Mark Florisson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor inferior execution control code, better gdb message handling and re-fix runtests.py
parent
bd41e488
Changes
4
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
178 additions
and
161 deletions
+178
-161
Cython/Debugger/Tests/test_libcython_in_gdb.py
Cython/Debugger/Tests/test_libcython_in_gdb.py
+1
-1
Cython/Debugger/libcython.py
Cython/Debugger/libcython.py
+25
-22
Cython/Debugger/libpython.py
Cython/Debugger/libpython.py
+146
-132
runtests.py
runtests.py
+6
-6
No files found.
Cython/Debugger/Tests/test_libcython_in_gdb.py
View file @
117ef042
...
...
@@ -58,7 +58,7 @@ class DebugTestCase(unittest.TestCase):
if
source_line
is
not
None
:
lineno
=
test_libcython
.
source_to_lineno
[
source_line
]
frame
=
gdb
.
selected_frame
()
self
.
assertEqual
(
libcython
.
cy
.
step
.
lineno
(
frame
),
lineno
)
self
.
assertEqual
(
libcython
.
cy
thon_info
.
lineno
(
frame
),
lineno
)
def
break_and_run
(
self
,
source_line
):
break_lineno
=
test_libcython
.
source_to_lineno
[
source_line
]
...
...
Cython/Debugger/libcython.py
View file @
117ef042
...
...
@@ -835,10 +835,9 @@ class CyBreak(CythonCommand):
return
compl
class
Cython
CodeStepper
(
CythonCommand
,
libpython
.
GenericCodeStepper
):
class
Cython
Info
(
CythonBase
,
libpython
.
LanguageInfo
):
"""
Base class for CyStep and CyNext. It implements the interface dictated by
libpython.GenericCodeStepper.
Implementation of the interface dictated by libpython.LanguageInfo.
"""
def
lineno
(
self
,
frame
):
...
...
@@ -849,20 +848,16 @@ class CythonCodeStepper(CythonCommand, libpython.GenericCodeStepper):
if
self
.
is_cython_function
(
frame
):
return
self
.
get_cython_lineno
(
frame
)
else
:
return
libpython
.
py_step
.
lineno
(
frame
)
return
libpython
.
py_step
.
l
ang_info
.
l
ineno
(
frame
)
def
get_source_line
(
self
,
frame
):
try
:
line
=
super
(
Cython
CodeStepper
,
self
).
get_source_line
(
frame
)
line
=
super
(
Cython
Info
,
self
).
get_source_line
(
frame
)
except
gdb
.
GdbError
:
return
None
else
:
return
line
.
strip
()
or
None
@
classmethod
def
register
(
cls
):
return
cls
(
cls
.
name
,
stepinto
=
getattr
(
cls
,
'stepinto'
,
False
))
def
runtime_break_functions
(
self
):
if
self
.
is_cython_function
():
return
self
.
get_cython_function
().
step_into_functions
...
...
@@ -873,7 +868,15 @@ class CythonCodeStepper(CythonCommand, libpython.GenericCodeStepper):
return
result
class
CyStep
(
CythonCodeStepper
):
class
CythonExecutionControlCommand
(
CythonCommand
,
libpython
.
ExecutionControlCommandBase
):
@
classmethod
def
register
(
cls
):
return
cls
(
cls
.
name
,
cython_info
)
class
CyStep
(
CythonExecutionControlCommand
,
libpython
.
PythonStepperMixin
):
"Step through Cython, Python or C code."
name
=
'cy step'
...
...
@@ -881,8 +884,7 @@ class CyStep(CythonCodeStepper):
def
invoke
(
self
,
args
,
from_tty
):
if
self
.
is_python_function
():
libpython
.
py_step
.
get_source_line
=
self
.
get_source_line
libpython
.
py_step
.
invoke
(
args
,
from_tty
)
self
.
python_step
(
self
.
stepinto
)
elif
not
self
.
is_cython_function
():
if
self
.
stepinto
:
command
=
'step'
...
...
@@ -891,7 +893,7 @@ class CyStep(CythonCodeStepper):
self
.
finish_executing
(
gdb
.
execute
(
command
,
to_string
=
True
))
else
:
self
.
step
()
self
.
step
(
stepinto
=
self
.
stepinto
)
class
CyNext
(
CyStep
):
...
...
@@ -901,7 +903,7 @@ class CyNext(CyStep):
stepinto
=
False
class
CyRun
(
Cython
CodeStepper
):
class
CyRun
(
Cython
ExecutionControlCommand
):
"""
Run a Cython program. This is like the 'run' command, except that it
displays Cython or Python source lines as well
...
...
@@ -909,26 +911,26 @@ class CyRun(CythonCodeStepper):
name
=
'cy run'
invoke
=
Cython
CodeStepper
.
run
invoke
=
Cython
ExecutionControlCommand
.
run
class
CyCont
(
Cy
Run
):
class
CyCont
(
Cy
thonExecutionControlCommand
):
"""
Continue a Cython program. This is like the 'run' command, except that it
displays Cython or Python source lines as well.
"""
name
=
'cy cont'
invoke
=
Cython
CodeStepper
.
cont
invoke
=
Cython
ExecutionControlCommand
.
cont
class
CyFinish
(
Cy
Run
):
class
CyFinish
(
Cy
thonExecutionControlCommand
):
"""
Execute until the function returns.
"""
name
=
'cy finish'
invoke
=
Cython
CodeStepper
.
finish
invoke
=
Cython
ExecutionControlCommand
.
finish
class
CyUp
(
CythonCommand
):
...
...
@@ -964,7 +966,7 @@ class CyDown(CyUp):
_command
=
'down'
class
CySelect
(
CythonCo
deStepper
):
class
CySelect
(
CythonCo
mmand
):
"""
Select a frame. Use frame numbers as listed in `cy backtrace`.
This command is useful because `cy backtrace` prints a reversed backtrace.
...
...
@@ -982,7 +984,7 @@ class CySelect(CythonCodeStepper):
while
frame
.
newer
():
frame
=
frame
.
newer
()
stackdepth
=
self
.
_
stackdepth
(
frame
)
stackdepth
=
libpython
.
stackdepth
(
frame
)
try
:
gdb
.
execute
(
'select %d'
%
(
stackdepth
-
stackno
-
1
,))
...
...
@@ -1288,5 +1290,6 @@ class CyLine(gdb.Function, CythonBase):
def
invoke
(
self
):
return
self
.
get_cython_lineno
()
cython_info
=
CythonInfo
()
cy
=
CyCy
.
register
()
cython_info
.
cy
=
cy
\ No newline at end of file
Cython/Debugger/libpython.py
View file @
117ef042
This diff is collapsed.
Click to expand it.
runtests.py
View file @
117ef042
...
...
@@ -644,12 +644,12 @@ class CythonUnitTestCase(CythonCompileTestCase):
except
Exception
:
pass
try
:
import
gdb
include_debugger
=
sys
.
version_info
[:
2
]
>
(
2
,
5
)
except
:
include_debugger
=
False
# Someone wrapped this in a:
# 'try: import gdb; ... except: include_debugger = False' thing, but don't do
# this, it doesn't work as gdb is a builtin module in GDB. The tests themselves
# are doing the skipping. If there's a problem with the tests, please file an
# issue.
include_debugger
=
sys
.
version_info
[:
2
]
>
(
2
,
5
)
def
collect_unittests
(
path
,
module_prefix
,
suite
,
selectors
):
def
file_matches
(
filename
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment