Obsolete Tracepoint Definition

An obsolete tracepoint definition is similar to a when in or when at breakpoint, possibly combined with watching for a change of a variable's value:

 

obsolete_trace_breakpoint_definition_command

        : trace [ variable_name ]

            [ thread_filter ]

            [ where_modifier ]

            [ logical_filter ]

            [ breakpoint_actions ]

        | trace function_name [ logical_filter ] [ breakpoint_actions ]

        | trace line_specifier [ logical_filter ] [ breakpoint_actions ]

 

where_modifier

        : in function_name

        | at line_specifier

 

line_specifier

        : quoted_filename:line_number

        | line_number

 

quoted_filename

        : "filename"

        | 'filename'

 

Following are the differences between an obsolete tracepoint and a when command:

For example:

 

(idb) trace in List<Node>::print

[#7: trace in void List<Node>::print(void)]

(idb) trace i in List<Node>::print

[#8: trace i in void List<Node>::print(void)]

(idb) trace List<Node>::print if i { print "Test 1" }

[#9: trace in void List<Node>::print(void) if i { print "Test 1" }]

 

If the trace command is given with no arguments, the debugger prints a trace identification line when each function in your program is entered. For example:

 

(idb) trace

[#10: trace]

(idb) status

#10 at procedure entry { trace-proc }

 

This is equivalent to the when every proc entry command (with equivalent performance degradation).