summaryrefslogtreecommitdiff
path: root/configs/sim/axis/remap/getting-started/python/util.py
blob: 27a6da11b1a554be0b8b995eed3cf203f013843c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import inspect
import emccanon

# O-word procedure to trap into the Pydevd debugger
# start debug server in Eclipse, then
# call as 'O<pydevd> call' from MDI

# example setup for debugging embedded Python code
# see http://pydev.org/manual_adv_remote_debugger.html
# if this points to a valid directory,

def call_pydevd():
    """ trap into the pydevd debugger"""
    
    import os,sys
    
    pydevdir= '/home/mah/.eclipse/org.eclipse.platform_3.5.0_155965261/plugins/org.python.pydev.debug_2.0.0.2011040403/pysrc/'

    # the 'emctask' module is present only in the milltask instance, otherwise both the UI and
    # milltask would try to connect to the debug server.

    if os.path.isdir(pydevdir) and  'emctask' in sys.builtin_module_names:
        sys.path.append(pydevdir)
        sys.path.insert(0,pydevdir)
        try:
            import pydevd
            emccanon.MESSAGE("pydevd imported, connecting to Eclipse debug server...")
            pydevd.settrace()
        except:
            emccanon.MESSAGE("no pydevd module found")
            pass



def lineno():
    """ return line number in the current Python script """
    return inspect.currentframe().f_back.f_lineno

def error_stack(self):
    """ print the Interpreters error stack (function names) """
    print "error stack level=%d" % (self.stack_index)
    for s in self.stack():
        print "--'%s'" % (s)

def callstack(self):
    """ print the O-Word call stack """
    for i in range(self.call_level):
        c = self.sub_context[i]
        print "%d: pos=%d seq=%d filename=%s sub=%s" % (i,c.position, c.sequence_number,c.filename,c.subname)