(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tracing) op: Equal rhs: {(/sys/kernel/debug/tracing)} spids: [148] ) ] spids: [148] ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:flock) op: Equal rhs: {(/var/tmp/.ftrace-lock)} spids: [151] ) ] spids: [151] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:wroteflock) op:Equal rhs:{(0)} spids:[155])] spids: [155] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_duration) op:Equal rhs:{(0)} spids:[158])] spids: [158] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:duration) op:Equal rhs:{(SQ )} spids:[162])] spids: [162] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_pid) op:Equal rhs:{(0)} spids:[165])] spids: [165] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pid) op:Equal rhs:{(SQ )} spids:[169])] spids: [169] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_tid) op:Equal rhs:{(0)} spids:[172])] spids: [172] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(SQ )} spids:[176])] spids: [176] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(0)} spids:[178])] spids: [178] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:filter) op:Equal rhs:{(SQ )} spids:[182])] spids: [182] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_view) op:Equal rhs:{(0)} spids:[185])] spids: [185] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_headers) op:Equal rhs:{(0)} spids:[189])] spids: [189] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_stack) op:Equal rhs:{(0)} spids:[193])] spids: [193] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:dmesg) op:Equal rhs:{(2)} spids:[197])] spids: [197] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:debug) op:Equal rhs:{(0)} spids:[200])] spids: [200] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_force) op:Equal rhs:{(0)} spids:[204])] spids: [204] ) (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: kprobe [-FhHsv] [-d secs] [-p PID] [-L TID] kprobe_definition [filter]\n" ) (" -F # force. trace despite warnings.\n") (" -d seconds # trace duration, and use buffers\n") (" -p PID # PID to match on events\n") (" -L TID # thread id to match on events\n") (" -v # view format file (don't trace)\n") (" -H # include column headers\n") (" -s # show kernel stack traces\n") (" -h # this usage message\n") ("\n") ("Note that these examples may need modification to match your kernel\n") ("version's function names and platform's register usage.\n") (" eg,\n") (" kprobe p:do_sys_open\n") (" # trace open() entry\n") (" kprobe r:do_sys_open\n") (" # trace open() return\n") (" kprobe 'r:do_sys_open ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("retval'\n") (" # trace open() return value\n") (" kprobe 'r:myopen do_sys_open ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("retval'\n") (" # use a custom probe name\n") (" kprobe 'p:myopen do_sys_open mode=%cx:u16'\n") (" # trace open() file mode\n") (" kprobe 'p:myopen do_sys_open filename=+0(%si):string'\n") (" # trace open() with filename\n") (" kprobe -s 'p:myprobe tcp_retransmit_skb'\n") (" # show kernel stacks\n") (" kprobe 'p:do_sys_open file=+0(%si):string' 'file ~ ") (Right_DoubleQuote "\"") ("*stat") (Right_DoubleQuote "\"") ("'\n") (" # opened files ending in ") (Right_DoubleQuote "\"") (stat) (Right_DoubleQuote "\"") ("\n") ("\n") ("See the man page and example file for more info.\n") ) } do_expansion: True here_end: END was_filled: True spids: [236] ) (Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[239]) ] ) (C {(exit)}) ] spids: [231] ) spids: [227 230] ) (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:[314])] ) ] spids: [-1 309] ) ] spids: [-1 325] ) ] spids: [295] ) spids: [291 294] ) (FuncDef name: end body: (BraceGroup children: [ (SimpleCommand words: [{(echo)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[343])] ) (SimpleCommand words: [{(echo)} {(DQ ("Ending tracing..."))}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[353])] ) (C {(cd)} {($ VSub_Name "$tracing")}) (C {(warn)} {(DQ ("echo 0 > events/kprobes/") ($ VSub_Name "$kname") (/enable))}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_filter)) terminator: <Op_Semi ";"> ) ] action: [ (C {(warn)} {(DQ ("echo 0 > events/kprobes/") ($ VSub_Name "$kname") (/filter))}) ] spids: [-1 381] ) ] spids: [-1 393] ) (C {(warn)} {(DQ ("echo -:") ($ VSub_Name "$kname") (" >> kprobe_events"))}) (AndOr children: [ (DParen child:(ArithVarRef name:opt_stack)) (C {(warn)} {(DQ ("echo 0 > options/stacktrace"))}) ] op_id: Op_DAmp ) (C {(warn)} {(DQ ("echo > trace"))}) (AndOr children: [ (DParen child:(ArithVarRef name:wroteflock)) (C {(warn)} {(DQ ("rm ") ($ VSub_Name "$flock"))}) ] op_id: Op_DAmp ) ] spids: [334] ) spids: [330 333] ) (FuncDef name: die body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_At "$@"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[456])] ) (C {(exit)} {(1)}) ] spids: [451] ) spids: [447 450] ) (FuncDef name: edie body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_At "$@"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[484])] ) (SimpleCommand words: [{(exec)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[494]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[497]) ] ) (C {(end)}) (C {(exit)} {(1)}) ] spids: [475] ) spids: [471 474] ) (While cond: [ (C {(getopts)} {(Fd) (Lit_Other ":") (hHp) (Lit_Other ":") (L) (Lit_Other ":") (sv)} {(opt)}) ] body: (DoGroup children: [ (Case to_match: {($ VSub_Name "$opt")} arms: [ (case_arm pat_list: [{(F)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_force) op: Equal rhs: {(1)} spids: [541] ) ] spids: [541] ) ] spids: [538 539 544 -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: [550] ) ] spids: [550] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:duration) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [554] ) ] spids: [554] ) ] spids: [547 548 557 -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: [563] ) ] spids: [563] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pid) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [567] ) ] spids: [567] ) ] spids: [560 561 570 -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: [576] ) ] spids: [576] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tid) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [580] ) ] spids: [580] ) ] spids: [573 574 583 -1] ) (case_arm pat_list: [{(H)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_headers) op: Equal rhs: {(1)} spids: [589] ) ] spids: [589] ) ] spids: [586 587 592 -1] ) (case_arm pat_list: [{(s)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_stack) op: Equal rhs: {(1)} spids: [598] ) ] spids: [598] ) ] spids: [595 596 601 -1] ) (case_arm pat_list: [{(v)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_view) op: Equal rhs: {(1)} spids: [607] ) ] spids: [607] ) ] spids: [604 605 610 -1] ) (case_arm pat_list: [{(h)} {(Lit_Other "?")}] action: [(C {(usage)})] spids: [613 616 620 -1] ) ] spids: [531 535 623] ) ] spids: [528 625] ) ) (C {(shift)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name "$OPTIND")}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [629 638] ) } ) (AndOr children: [(DParen child:(ArithWord w:{($ VSub_Pound "$#")})) (C {(usage)})] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:kprobe) op:Equal rhs:{($ VSub_Number "$1")} spids:[651])] spids: [651] ) (C {(shift)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithWord w:{($ VSub_Pound "$#")})) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(1)} spids:[669])] spids: [669] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filter) op: Equal rhs: {($ VSub_Number "$1")} spids: [673] ) ] spids: [673] ) ] spids: [-1 666] ) ] spids: [-1 676] ) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_Great left: (ArithBinary op_id: Arith_Plus left: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:opt_pid) right: (ArithVarRef name:opt_filter) ) right: (ArithVarRef name:opt_tid) ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) (C {(die)} {(DQ ("ERROR: use at most one of -p, -L, or filter."))}) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_DAmp left: (ArithVarRef name:opt_duration) right: (ArithVarRef name:opt_view) ) ) (C {(die)} {(DQ ("ERROR: use either -d or -v."))}) ] op_id: Op_DAmp ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_pid)) terminator:<Op_Semi ";">)] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(1)} spids:[747])] spids: [747] ) (ForEach iter_name: tid iter_words: [{(/proc/) ($ VSub_Name "$pid") (/task/) (Lit_Other "*")}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filter) op: Equal rhs: { (DQ ($ VSub_Name "$filter") (" || common_pid == ") (BracedVarSub token: <VSub_Name tid> suffix_op: (StringUnary op_id: VOp1_DPound arg_word: {("*") (Lit_Slash /)} ) spids: [774 779] ) ) } spids: [770] ) ] spids: [770] ) ] spids: [767 783] ) spids: [760 765] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filter) op: Equal rhs: { (BracedVarSub token: <VSub_Name filter> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)})) spids: [787 791] ) } spids: [786] ) ] spids: [786] ) ] spids: [-1 740] ) ] spids: [-1 796] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_tid)) terminator:<Op_Semi ";">)] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(1)} spids:[811])] spids: [811] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filter) op: Equal rhs: {(DQ ("common_pid == ") ($ VSub_Name "$tid"))} spids: [815] ) ] spids: [815] ) ] spids: [-1 808] ) ] spids: [-1 821] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$kprobe"))} right: {(p) (Lit_Other ":") (Lit_Other "*")} ) right: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$kprobe"))} right: {(r) (Lit_Other ":") (Lit_Other "*")} ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ("ERROR: invalid kprobe definition (should start with p: or r:)"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[857])] ) (C {(usage)}) ] spids: [-1 852] ) ] spids: [-1 867] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:krest) op: Equal rhs: { (BracedVarSub token: <VSub_Name kprobe> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*:")}) spids: [906 910] ) } spids: [905] ) ] spids: [905] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:kname) op: Equal rhs: { (BracedVarSub token: <VSub_Name krest> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(" *")}) spids: [913 917] ) } spids: [912] ) ] spids: [912] ) (C {(set)} {(--)} {($ VSub_Name "$krest")}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id:BoolBinary_GlobDEqual left:{($ VSub_Number "$2")} right:{(DQ )}) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number "$2")} right: {(Lit_Other "*") (Lit_Other "[") (BoolBinary_GlobEqual "=") (Lit_Other "%") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) (Lit_Other "]") (Lit_Other "*") } ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ktype) op: Equal rhs: { (BracedVarSub token: <VSub_Name kprobe> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(":*")}) spids: [961 965] ) } spids: [960] ) ] spids: [960] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:kprobe) op: Equal rhs: { (DQ ($ VSub_Name "$ktype") (":") ($ VSub_Name "$kname") (" ") ($ VSub_Name "$krest") ) } spids: [968] ) ] spids: [968] ) ] spids: [-1 953] ) ] spids: [-1 977] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:debug)) terminator:<Op_Semi ";">)] action: [ (C {(echo)} {(DQ ("kname: ") ($ VSub_Name "$kname") (", kprobe: ") ($ VSub_Name "$kprobe"))}) ] spids: [-1 989] ) ] spids: [-1 1001] ) (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 ) (C {(set)} {(--)} {($ VSub_Name "$kprobe")}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fname) op:Equal rhs:{($ VSub_Number "$2")} spids:[1030])] spids: [1030] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (DParen child: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_force)) ) (Pipeline children: [ (SimpleCommand words: [{(grep)} {(-w)} {($ VSub_Name "$fname")} {(available_filter_functions)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [1055] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [1060] ) ] ) ] negated: True ) ] op_id: Op_DAmp ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("ERROR: func ") ($ VSub_Name "$fname") (" not in ") ($ VSub_Name "$PWD") (/available_filter_functions.) ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1068])] ) (SimpleCommand words: [{(printf)} {(DQ ("Either it doesn't exist, or, it might be unsafe to kprobe. "))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1082])] ) (SimpleCommand words: [{(echo)} {(DQ ("Exiting. Use -F to override."))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1092])] ) (C {(exit)} {(1)}) ] spids: [-1 1063] ) ] spids: [-1 1104] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_view))) terminator: <Op_Semi ";"> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_duration)) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} { (DQ ("Tracing kprobe ") ($ VSub_Name "$kname") (" for ") ($ VSub_Name "$duration") (" seconds (buffered)...") ) } ) ] spids: [-1 1131] ) ] else_action: [ (C {(echo)} {(DQ ("Tracing kprobe ") ($ VSub_Name "$kname") (". Ctrl-C to end."))}) ] spids: [1145 1157] ) ] spids: [-1 1118] ) ] spids: [-1 1159] ) (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: [1179 1183] ) (" ") ($ 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:[1192])] ) (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:[1206])] spids: [1206] ) (SimpleCommand words: [{(echo)} {(nop)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(current_tracer)} spids:[1217])] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name "$kprobe"))}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {(kprobe_events)} spids: [1231] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("ERROR: adding kprobe ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$kprobe") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (.) ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1241])] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:dmesg)) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("Last ") ($ VSub_Name "$dmesg") (" dmesg entries (might contain reason):") ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1268])] ) (Pipeline children: [ (C {(dmesg)}) (C {(tail)} {(-) ($ VSub_Name "$dmesg")}) (C {(sed)} {(SQ <"s/^/ /">)}) ] negated: False ) ] spids: [-1 1263] ) ] spids: [-1 1296] ) (C {(edie)} {(DQ (Exiting.))}) ] spids: [-1 1236] ) ] spids: [-1 1305] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_view)) terminator:<Op_Semi ";">)] action: [(C {(cat)} {(events/kprobes/) ($ VSub_Name "$kname") (/format)}) (C {(edie)} {(DQ )})] spids: [-1 1317] ) ] spids: [-1 1332] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_filter)) terminator: <Op_Semi ";"> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name "$filter"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(events/kprobes/) ($ VSub_Name "$kname") (/filter)} spids: [1357] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: setting filter or -p. Exiting."))})] spids: [-1 1364] ) ] spids: [-1 1374] ) ] spids: [-1 1344] ) ] spids: [-1 1376] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_stack)) terminator:<Op_Semi ";">)] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(1)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(options/stacktrace)} spids: [1399] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: enabling stack traces (-s). Exiting"))})] spids: [-1 1404] ) ] spids: [-1 1414] ) ] spids: [-1 1388] ) ] spids: [-1 1416] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(1)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(events/kprobes/) ($ VSub_Name "$kname") (/enable)} spids: [1426] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: enabling kprobe ") ($ VSub_Name "$kname") (". Exiting."))})] spids: [-1 1433] ) ] spids: [-1 1444] ) (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 1484] ) ] else_action: [(C {(grep)} {(-v)} {(SQ <"^#">)} {(trace)})] spids: [1492 1506] ) ] spids: [-1 1466] ) ] else_action: [ (AndOr children: [(DParen child:(ArithVarRef name:opt_headers)) (C {(cat)} {(trace)})] op_id: Op_DAmp ) (C {(cat)} {(trace_pipe)}) ] spids: [1508 1533] ) (C {(end)}) ] )