function ptrace,option=option,sublevel=sublevel,dtime=dtime,str
common ptrace_com2,display_option,lasttime ,prefix
if n_elements(dtime) ne 0 then lasttime= keyword_set(dtime) ? systime(1) : 0
if n_elements(option) ne 0 then display_option = option
if n_elements(display_option) eq 0 then display_option = 1
if n_elements(prefix) eq 0 then prefix=''
if display_option eq 0 then return,''
stack = scope_traceback(/structure,system=1)
level = n_elements(stack)-1
if keyword_set(sublevel) then level -= sublevel
level = level > 1
stack = stack[0:level-1]
rnames=stack.routine + string(stack.line,format='("(",i0,"): ")')
case display_option of
0: rnames[*] = ''
1: if level ge 2 then rnames[0:level-2] = ''
2: if level ge 2 then rnames[0:level-2] = ' '
else:
endcase
res = prefix+strjoin(rnames)
if keyword_set(lasttime) then begin
newtime=systime(1)
res = string(format='(f6.3,": ")',newtime-lasttime)+res
lasttime = newtime
endif
if keyword_set(str) then res = str+res
return,res
end