diff options
author | Dieter Verfaillie <dieterv@optionexplicit.be> | 2012-03-19 08:29:28 +0100 |
---|---|---|
committer | Dieter Verfaillie <dieterv@optionexplicit.be> | 2015-06-29 16:54:29 +0200 |
commit | af97f472b16ceef6c33b8fd6b9f36eef0e60c7cb (patch) | |
tree | affe66aba4d95112aebbc8ad3b0b2ecbb3ab1665 | |
parent | fb9dd21303254c01a0b150f02b17697d53b43669 (diff) | |
download | gobject-introspection-af97f472b16ceef6c33b8fd6b9f36eef0e60c7cb.tar.gz |
tools: add support for PyDev remote debugger.
-rw-r--r-- | HACKING | 14 | ||||
-rwxr-xr-x | tools/g-ir-annotation-tool.in | 21 | ||||
-rw-r--r-- | tools/g-ir-doc-tool.in | 21 | ||||
-rwxr-xr-x | tools/g-ir-scanner.in | 21 |
4 files changed, 59 insertions, 18 deletions
@@ -8,6 +8,20 @@ debugging * You can use the GI_SCANNER_DEBUG environment variable; see utils.py for a list of debug flags. +* It is possible to debug the various g-ir-* tools using PyDev's remote debugger. + To do this: + - locate the directory that contains the pydevd.py file matching the PyDev version + running in your Eclipse instance. This might look like: + /usr/lib64/eclipse/dropins/pydev-core/eclipse/plugins/org.python.pydev_4.0.0.201505131500/pysrc/) + - open the "Debug" perspective in your Eclipse instance, open the "PyDev" menu and start the + debug server + - execute the g-ir-* tool setting the GI_SCANNER_DEBUG and PYDEVDPATH environment variables. + For example: + GI_SCANNER_DEBUG="pydevd" PYDEVDPATH="/usr/lib64/eclipse/dropins/pydev-core/eclipse/plugins/org.python.pydev_4.0.0.201505131500/pysrc/" g-ir-scanner <parameters> + - In the example above, the PyDev debugger will run g-ir-scanner and stop execution in the main + script. You can then set extra breakpoints, step through the code, inspect variables at the + current scope, inspect the stack and so forth. + giscanner --------- diff --git a/tools/g-ir-annotation-tool.in b/tools/g-ir-annotation-tool.in index 811e9153..cf17a235 100755 --- a/tools/g-ir-annotation-tool.in +++ b/tools/g-ir-annotation-tool.in @@ -24,12 +24,21 @@ import sys import __builtin__ -if 'GI_SCANNER_DEBUG' in os.environ: - def on_exception(exctype, value, tb): - print "Caught exception: %r %r" % (exctype, value) - import pdb - pdb.pm() - sys.excepthook = on_exception +debug = os.getenv('GI_SCANNER_DEBUG', '').split(',') +if debug: + if 'pydevd' in debug: + # http://pydev.org/manual_adv_remote_debugger.html + pydevdpath = os.getenv('PYDEVDPATH', None) + if pydevdpath is not None and os.path.isdir(pydevdpath): + sys.path.insert(0, pydevdpath) + import pydevd + pydevd.settrace() + else: + def on_exception(exctype, value, tb): + print "Caught exception: %r %r" % (exctype, value) + import pdb + pdb.pm() + sys.excepthook = on_exception if os.name == 'nt': datadir = os.path.join(os.path.dirname(__file__), '..', 'share') diff --git a/tools/g-ir-doc-tool.in b/tools/g-ir-doc-tool.in index db389ba9..e3bf8a34 100644 --- a/tools/g-ir-doc-tool.in +++ b/tools/g-ir-doc-tool.in @@ -24,12 +24,21 @@ import sys import __builtin__ -if 'GI_SCANNER_DEBUG' in os.environ: - def on_exception(exctype, value, tb): - print "Caught exception: %r %r" % (exctype, value) - import pdb - pdb.pm() - sys.excepthook = on_exception +debug = os.getenv('GI_SCANNER_DEBUG', '').split(',') +if debug: + if 'pydevd' in debug: + # http://pydev.org/manual_adv_remote_debugger.html + pydevdpath = os.getenv('PYDEVDPATH', None) + if pydevdpath is not None and os.path.isdir(pydevdpath): + sys.path.insert(0, pydevdpath) + import pydevd + pydevd.settrace() + else: + def on_exception(exctype, value, tb): + print "Caught exception: %r %r" % (exctype, value) + import pdb + pdb.pm() + sys.excepthook = on_exception if os.name == 'nt': datadir = os.path.join(os.path.dirname(__file__), '..', 'share') diff --git a/tools/g-ir-scanner.in b/tools/g-ir-scanner.in index 420d435b..7b2c5687 100755 --- a/tools/g-ir-scanner.in +++ b/tools/g-ir-scanner.in @@ -24,12 +24,21 @@ import sys import __builtin__ -if 'GI_SCANNER_DEBUG' in os.environ: - def on_exception(exctype, value, tb): - print "Caught exception: %r %r" % (exctype, value) - import pdb - pdb.pm() - sys.excepthook = on_exception +debug = os.getenv('GI_SCANNER_DEBUG', '').split(',') +if debug: + if 'pydevd' in debug: + # http://pydev.org/manual_adv_remote_debugger.html + pydevdpath = os.getenv('PYDEVDPATH', None) + if pydevdpath is not None and os.path.isdir(pydevdpath): + sys.path.insert(0, pydevdpath) + import pydevd + pydevd.settrace() + else: + def on_exception(exctype, value, tb): + print "Caught exception: %r %r" % (exctype, value) + import pdb + pdb.pm() + sys.excepthook = on_exception if os.name == 'nt': datadir = os.path.join(os.path.dirname(__file__), '..', 'share') |