(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tracing) op: Equal rhs: {(/sys/kernel/debug/tracing)} spids: [202] ) ] spids: [202] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:flock) op: Equal rhs: {(/var/tmp/.ftrace-lock)} spids: [205] ) ] spids: [205] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_duration) op:Equal rhs:{(0)} spids:[208])] spids: [208] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:duration) op:Equal rhs:{(SQ )} spids:[212])] spids: [212] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_pid) op:Equal rhs:{(0)} spids:[215])] spids: [215] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pid) op:Equal rhs:{(SQ )} spids:[219])] spids: [219] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_tid) op:Equal rhs:{(0)} spids:[222])] spids: [222] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(SQ )} spids:[226])] spids: [226] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pidtext) op:Equal rhs:{(SQ )} spids:[229])] spids: [229] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_headers) op:Equal rhs:{(0)} spids:[231])] spids: [231] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_proc) op:Equal rhs:{(0)} spids:[235])] spids: [235] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_time) op:Equal rhs:{(0)} spids:[239])] spids: [239] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_tail) op:Equal rhs:{(0)} spids:[243])] spids: [243] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_nodur) op:Equal rhs:{(0)} spids:[247])] spids: [247] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_cpu) op:Equal rhs:{(0)} spids:[251])] spids: [251] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_max) op:Equal rhs:{(0)} spids:[254])] spids: [254] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:max) op:Equal rhs:{(0)} spids:[258])] spids: [258] ) (C {(trap)} {(SQ <":">)} {(INT)} {(QUIT)} {(TERM)} {(PIPE)} {(HUP)}) (FuncDef name: usage body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLessDash fd: -1 body: { (DQ ( "USAGE: funcgraph [-aCDhHPtT] [-m maxdepth] [-p PID] [-L TID] [-d secs] funcstring\n" ) (" -a # all info (same as -HPt)\n") (" -C # measure on-CPU time only\n") (" -d seconds # trace duration, and use buffers\n") (" -D # do not show function duration\n") (" -h # this usage message\n") (" -H # include column headers\n") (" -m maxdepth # max stack depth to show\n") (" -p PID # trace when this pid is on-CPU\n") (" -L TID # trace when this thread is on-CPU\n") (" -P # show process names & PIDs\n") (" -t # show timestamps\n") (" -T # comment function tails\n") (" eg,\n") (" funcgraph do_nanosleep # trace do_nanosleep() and children\n") ( " funcgraph -m 3 do_sys_open # trace do_sys_open() to 3 levels only\n" ) (" funcgraph -a do_sys_open # include timestamps and process name\n") ( " funcgraph -p 198 do_sys_open # trace vfs_read() for PID 198 only\n" ) (" funcgraph -d 1 do_sys_open >out # trace 1 sec, then write to file\n") ("\n") ("See the man page and example file for more info.\n") ) } do_expansion: True here_end: END was_filled: True spids: [290] ) (Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[293]) ] ) (C {(exit)}) ] spids: [285] ) spids: [281 284] ) (FuncDef name: warn body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children:[(C {(eval)} {(DQ ($ VSub_At "$@"))})] negated:True) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("WARNING: command failed ") (EscapedLiteralPart token: <Lit_EscapedChar "\\\""> ) ($ VSub_At "$@") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[346])] ) ] spids: [-1 341] ) ] spids: [-1 357] ) ] spids: [327] ) spids: [323 326] ) (FuncDef name: end body: (BraceGroup children: [ (SimpleCommand words: [{(echo)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[375])] ) (SimpleCommand words: [{(echo)} {(DQ ("Ending tracing..."))}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[385])] ) (C {(cd)} {($ VSub_Name "$tracing")}) (AndOr children: [ (DParen child:(ArithVarRef name:opt_time)) (C {(warn)} {(DQ ("echo nofuncgraph-abstime > trace_options"))}) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_proc)) (C {(warn)} {(DQ ("echo nofuncgraph-proc > trace_options"))}) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_tail)) (C {(warn)} {(DQ ("echo nofuncgraph-tail > trace_options"))}) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_nodur)) (C {(warn)} {(DQ ("echo funcgraph-duration > trace_options"))}) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_cpu)) (C {(warn)} {(DQ ("echo sleep-time > trace_options"))}) ] op_id: Op_DAmp ) (C {(warn)} {(DQ ("echo nop > current_tracer"))}) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_DPipe left: (ArithVarRef name:opt_pid) right: (ArithVarRef name:opt_tid) ) ) (C {(warn)} {(DQ ("echo > set_ftrace_pid"))}) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_max)) (C {(warn)} {(DQ ("echo 0 > max_graph_depth"))}) ] op_id: Op_DAmp ) (C {(warn)} {(DQ ("echo > set_graph_function"))}) (C {(warn)} {(DQ ("echo > trace"))}) (AndOr children: [ (DParen child:(ArithVarRef name:wroteflock)) (C {(warn)} {(DQ ("rm ") ($ VSub_Name "$flock"))}) ] op_id: Op_DAmp ) ] spids: [366] ) spids: [362 365] ) (FuncDef name: die body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_At "$@"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[562])] ) (C {(exit)} {(1)}) ] spids: [557] ) spids: [553 556] ) (FuncDef name: edie body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_At "$@"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[590])] ) (SimpleCommand words: [{(exec)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[600]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[603]) ] ) (C {(end)}) (C {(exit)} {(1)}) ] spids: [581] ) spids: [577 580] ) (While cond: [ (C {(getopts)} {(aCd) (Lit_Other ":") (DhHm) (Lit_Other ":") (p) (Lit_Other ":") (L) (Lit_Other ":") (PtT)} {(opt)} ) ] body: (DoGroup children: [ (Case to_match: {($ VSub_Name "$opt")} arms: [ (case_arm pat_list: [{(a)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_headers) op: Equal rhs: {(1)} spids: [649] ) ] spids: [649] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_proc) op: Equal rhs: {(1)} spids: [653] ) ] spids: [653] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_time) op: Equal rhs: {(1)} spids: [657] ) ] spids: [657] ) ] spids: [646 647 660 -1] ) (case_arm pat_list: [{(C)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_cpu) op: Equal rhs: {(1)} spids: [666] ) ] spids: [666] ) terminator: <Op_Semi ";"> ) ] spids: [663 664 670 -1] ) (case_arm pat_list: [{(d)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_duration) op: Equal rhs: {(1)} spids: [676] ) ] spids: [676] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:duration) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [680] ) ] spids: [680] ) ] spids: [673 674 683 -1] ) (case_arm pat_list: [{(D)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_nodur) op: Equal rhs: {(1)} spids: [689] ) ] spids: [689] ) terminator: <Op_Semi ";"> ) ] spids: [686 687 693 -1] ) (case_arm pat_list: [{(m)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_max) op: Equal rhs: {(1)} spids: [699] ) ] spids: [699] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:max) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [703] ) ] spids: [703] ) ] spids: [696 697 706 -1] ) (case_arm pat_list: [{(p)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_pid) op: Equal rhs: {(1)} spids: [712] ) ] spids: [712] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pid) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [716] ) ] spids: [716] ) ] spids: [709 710 719 -1] ) (case_arm pat_list: [{(L)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_tid) op: Equal rhs: {(1)} spids: [725] ) ] spids: [725] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tid) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [729] ) ] spids: [729] ) ] spids: [722 723 732 -1] ) (case_arm pat_list: [{(H)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_headers) op: Equal rhs: {(1)} spids: [738] ) ] spids: [738] ) terminator: <Op_Semi ";"> ) ] spids: [735 736 742 -1] ) (case_arm pat_list: [{(P)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_proc) op: Equal rhs: {(1)} spids: [748] ) ] spids: [748] ) terminator: <Op_Semi ";"> ) ] spids: [745 746 752 -1] ) (case_arm pat_list: [{(t)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_time) op: Equal rhs: {(1)} spids: [758] ) ] spids: [758] ) terminator: <Op_Semi ";"> ) ] spids: [755 756 762 -1] ) (case_arm pat_list: [{(T)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_tail) op: Equal rhs: {(1)} spids: [768] ) ] spids: [768] ) terminator: <Op_Semi ";"> ) ] spids: [765 766 772 -1] ) (case_arm pat_list: [{(h)} {(Lit_Other "?")}] action: [(C {(usage)})] spids: [775 778 782 -1] ) ] spids: [639 643 785] ) ] spids: [636 787] ) ) (C {(shift)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name "$OPTIND")}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [791 800] ) } ) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) (C {(usage)}) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_DAmp left: (ArithVarRef name:opt_pid) right: (ArithVarRef name:opt_tid) ) ) (C {(edie)} {(DQ ("ERROR: You can use -p or -L but not both."))}) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:funcs) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [840] ) ] spids: [840] ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_pid)) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pidtext) op: Equal rhs: {(DQ (" for PID ") ($ VSub_Name "$pid"))} spids: [854] ) ] spids: [854] ) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_tid)) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pidtext) op: Equal rhs: {(DQ (" for TID ") ($ VSub_Name "$tid"))} spids: [869] ) ] spids: [869] ) ] op_id: Op_DAmp ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_duration)) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} { (DQ ("Tracing ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$funcs") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$pidtext") (" for ") ($ VSub_Name "$duration") (" seconds...") ) } ) ] spids: [-1 885] ) ] else_action: [ (C {(echo)} { (DQ ("Tracing ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$funcs") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$pidtext") ("... Ctrl-C to end.") ) } ) ] spids: [901 915] ) (AndOr children: [ (C {(cd)} {($ VSub_Name "$tracing")}) (C {(die)} { (DQ ("ERROR: accessing tracing. Root user? Kernel has FTRACE?\n") (" debugfs mounted? (mount -t debugfs debugfs /sys/kernel/debug)") ) } ) ] op_id: Op_DPipe ) (AndOr children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_e child:{($ VSub_Name "$flock")})) (C {(die)} { (DQ ("ERROR: ftrace may be in use by PID ") (CommandSubPart command_list: (CommandList children:[(C {(cat)} {($ VSub_Name "$flock")})]) left_token: <Left_CommandSub "$("> spids: [952 956] ) (" ") ($ VSub_Name "$flock") ) } ) ] op_id: Op_DAmp ) (AndOr children: [ (SimpleCommand words: [{(echo)} {($ VSub_Dollar "$$")}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Name "$flock")} spids:[965])] ) (C {(die)} {(DQ ("ERROR: unable to write ") ($ VSub_Name "$flock") (.))}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:wroteflock) op:Equal rhs:{(1)} spids:[979])] spids: [979] ) (C {(sysctl)} {(-q)} {(kernel.ftrace_enabled) (Lit_Other "=") (1)}) (SimpleCommand words: [{(read)} {(mode)}] redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(current_tracer)} spids:[1001])] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$mode"))} right: {(DQ (nop))} ) ) (C {(edie)} {(DQ ("ERROR: ftrace active (current_tracer=") ($ VSub_Name "$mode") (")"))}) ] op_id: Op_DAmp ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_max)) terminator:<Op_Semi ";">)] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {($ VSub_Name "$max")}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(max_graph_depth)} spids: [1050] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [ (C {(edie)} { (DQ ("ERROR: setting -m ") ($ VSub_Name "$max") (". Older kernel version? Exiting.") ) } ) ] spids: [-1 1055] ) ] spids: [-1 1067] ) ] spids: [-1 1039] ) ] spids: [-1 1069] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_pid)) terminator:<Op_Semi ";">)] action: [ (SimpleCommand words: [{(echo)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(set_ftrace_pid)} spids:[1086])] ) (ForEach iter_name: tid iter_words: [{(/proc/) ($ VSub_Name "$pid") (/task/) (Lit_Other "*")}] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [ {(echo)} { (BracedVarSub token: <VSub_Name tid> suffix_op: (StringUnary op_id: VOp1_DPound arg_word: {("*") (Lit_Slash /)} ) spids: [1116 1121] ) } ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {(set_ftrace_pid)} spids: [1123] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [ (C {(edie)} { (DQ ("ERROR: setting -p ") ($ VSub_Name "$pid") (" (PID exist?). Exiting.") ) } ) ] spids: [-1 1128] ) ] spids: [-1 1140] ) ] spids: [1107 1143] ) spids: [1100 1105] ) ] spids: [-1 1081] ) ] spids: [-1 1145] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_tid)) terminator:<Op_Semi ";">)] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {($ VSub_Name "$tid")}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(set_ftrace_pid)} spids: [1168] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [ (C {(edie)} {(DQ ("ERROR: setting -L ") ($ VSub_Name "$tid") (" (TID exist?). Exiting."))} ) ] spids: [-1 1173] ) ] spids: [-1 1185] ) ] spids: [-1 1157] ) ] spids: [-1 1187] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(set_ftrace_filter)} spids: [1195] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: writing to set_ftrace_filter. Exiting."))})] spids: [-1 1200] ) ] spids: [-1 1209] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name "$funcs"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(set_graph_function)} spids: [1221] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [ (C {(edie)} { (DQ ("ERROR: enabling ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$funcs") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (". Exiting.") ) } ) ] spids: [-1 1226] ) ] spids: [-1 1239] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(function_graph)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(current_tracer)} spids: [1249] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [ (C {(edie)} { (DQ ("ERROR: setting current_tracer to ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (function) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (". Exiting.") ) } ) ] spids: [-1 1254] ) ] spids: [-1 1267] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_cpu)) terminator:<Op_Semi ";">)] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(nosleep-time)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(trace_options)} spids: [1290] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: setting -C (nosleep-time). Exiting."))})] spids: [-1 1295] ) ] spids: [-1 1305] ) ] spids: [-1 1279] ) ] spids: [-1 1307] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_time)) terminator:<Op_Semi ";">)] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(funcgraph-abstime)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(trace_options)} spids: [1333] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: setting -t (funcgraph-abstime). Exiting."))})] spids: [-1 1338] ) ] spids: [-1 1348] ) ] spids: [-1 1322] ) ] spids: [-1 1350] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_proc)) terminator:<Op_Semi ";">)] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(funcgraph-proc)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(trace_options)} spids: [1373] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: setting -P (funcgraph-proc). Exiting."))})] spids: [-1 1378] ) ] spids: [-1 1388] ) ] spids: [-1 1362] ) ] spids: [-1 1390] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_tail)) terminator:<Op_Semi ";">)] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(funcgraph-tail)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(trace_options)} spids: [1413] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [ (C {(edie)} {(DQ ("ERROR: setting -T (funcgraph-tail). Old kernel? Exiting."))}) ] spids: [-1 1418] ) ] spids: [-1 1428] ) ] spids: [-1 1402] ) ] spids: [-1 1430] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_nodur)) terminator:<Op_Semi ";">)] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(nofuncgraph-duration)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(trace_options)} spids: [1453] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: setting -D (nofuncgraph-duration). Exiting."))})] spids: [-1 1458] ) ] spids: [-1 1468] ) ] spids: [-1 1442] ) ] spids: [-1 1470] ) (C {(warn)} {(DQ ("echo > trace"))}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_duration)) terminator: <Op_Semi ";"> ) ] action: [ (C {(sleep)} {($ VSub_Name "$duration")}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_headers)) terminator: <Op_Semi ";"> ) ] action: [(C {(cat)} {(trace)})] spids: [-1 1510] ) ] else_action: [(C {(grep)} {(-v)} {(SQ <"^#">)} {(trace)})] spids: [1518 1532] ) ] spids: [-1 1492] ) ] else_action: [ (AndOr children: [(DParen child:(ArithVarRef name:opt_headers)) (C {(cat)} {(trace)})] op_id: Op_DAmp ) (C {(cat)} {(trace_pipe)}) ] spids: [1534 1559] ) (C {(end)}) ] )