summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-01-27 15:20:33 (GMT)
committerSteven Knight <knight@baldmt.com>2002-01-27 15:20:33 (GMT)
commit2e90c9d1a397504e99d95d07df2a01224a77b3c7 (patch)
tree7a6273980ab28c0fa34ad7b97d5c51f38b10e719 /src
parent47e39e99099af899b36634a6bf13459587f61ba1 (diff)
downloadSCons-2e90c9d1a397504e99d95d07df2a01224a77b3c7.zip
SCons-2e90c9d1a397504e99d95d07df2a01224a77b3c7.tar.gz
SCons-2e90c9d1a397504e99d95d07df2a01224a77b3c7.tar.bz2
Add a --debug=pdb option to run SCons under the Python debugger.
Diffstat (limited to 'src')
-rw-r--r--src/CHANGES.txt2
-rw-r--r--src/engine/SCons/Script/__init__.py16
2 files changed, 17 insertions, 1 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index f381241..05c4b81 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -63,6 +63,8 @@ RELEASE 0.04 -
and updating multiple targets in a single Task. Simplify the
interface between Task and Taskmaster.
+ - Add a --debug=pdb option to re-run SCons under the Python debugger.
+
From Steve Leblanc:
- Add var=value command-line arguments.
diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py
index 12a22f4..0416b62 100644
--- a/src/engine/SCons/Script/__init__.py
+++ b/src/engine/SCons/Script/__init__.py
@@ -361,7 +361,21 @@ def options_init():
def opt_debug(opt, arg):
global print_tree
- if arg == "tree":
+ if arg == "pdb":
+ if sys.platform == 'win32':
+ lib_dir = os.path.join(sys.exec_prefix, "lib")
+ else:
+ lib_dir = os.path.join(sys.exec_prefix,
+ "lib",
+ "python" + sys.version[0:3])
+ args = [ sys.executable, os.path.join(lib_dir, "pdb.py") ] + \
+ filter(lambda x: x != "--debug=pdb", sys.argv)
+ if sys.platform == 'win32':
+ ret = os.spawnve(os.P_WAIT, cmd_interp, args, env)
+ sys.exit(ret)
+ else:
+ os.execvpe(args[0], args, os.environ)
+ elif arg == "tree":
print_tree = 1
else:
sys.stderr.write("Warning: %s is not a valid debug type\n"