Add the posibility to launch activitis in gdb to sugar-lauch.
This commit is contained in:
parent
02d8dfe795
commit
5084ecf4f4
@ -20,11 +20,14 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser
|
||||||
|
|
||||||
|
from sugar import env
|
||||||
from sugar.activity import activityfactory
|
from sugar.activity import activityfactory
|
||||||
from sugar.activity.registry import get_registry
|
from sugar.activity.registry import get_registry
|
||||||
|
|
||||||
usage = "usage: %prog [options] activity"
|
usage = "usage: %prog [options] activity"
|
||||||
parser = OptionParser(usage)
|
parser = OptionParser(usage)
|
||||||
|
parser.add_option("-d", "--debug", action="store_true", dest="debug",
|
||||||
|
help="launch activity inside gdb")
|
||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if len(args) == 0:
|
if len(args) == 0:
|
||||||
@ -37,5 +40,33 @@ if len(activities) == 0:
|
|||||||
print 'Activity not found.'
|
print 'Activity not found.'
|
||||||
|
|
||||||
activity = activities[0]
|
activity = activities[0]
|
||||||
args = activityfactory.get_command(activity).split(' ')
|
cmd_args = activityfactory.get_command(activity).split(' ')
|
||||||
os.execvpe(args[0], args, activityfactory.get_environment(activity))
|
print cmd_args
|
||||||
|
|
||||||
|
def _get_interpreter(exec_file):
|
||||||
|
if os.path.exists(exec_file):
|
||||||
|
abs_path = exec_file
|
||||||
|
else:
|
||||||
|
abs_path = os.path.join(env.get_bin_path(), exec_file)
|
||||||
|
if not os.path.exists(abs_path):
|
||||||
|
return exec_file
|
||||||
|
|
||||||
|
f = open(abs_path)
|
||||||
|
line = f.readline(100)
|
||||||
|
if line.startswith('#!'):
|
||||||
|
cmds = line[2:].strip().split(' ')
|
||||||
|
cmds.append(abs_path)
|
||||||
|
return cmds
|
||||||
|
|
||||||
|
return exec_file
|
||||||
|
|
||||||
|
if options.debug:
|
||||||
|
act_args = cmd_args
|
||||||
|
cmd_args = ['gdb', '--args']
|
||||||
|
cmd_args.extend(_get_interpreter(act_args.pop(0)))
|
||||||
|
cmd_args.extend(act_args)
|
||||||
|
|
||||||
|
print cmd_args
|
||||||
|
|
||||||
|
os.execvpe(cmd_args[0], cmd_args, activityfactory.get_environment(activity))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user