4.4.1.2 Setting watchpoints (‘watch’, ‘watche’)

You can use a watchpoint to stop execution whenever the value of an expression changes, without having to predict a particular place where this may happen. As with the print (see Examining Data), the idiosyncrasies of a BASH or any POSIX shell derivative suggest using two commands. The watch command is just for a single variables; the watche command uses the builtin “let” command to evaluate an expression. If the variable you are tracking can take a string value, issuing something like ‘watch foo’ will not have the desired effect—any string assignment to foo will have a value 0 when it is assigned via “let.”

watch var

Set a watchpoint for a variable. the BASH debugger will break when the value of var changes. In this command do not add a leading dollar symbol to var.

watche expr

Set a watchpoint for an expression via the builtin “let” command. the BASH debugger will break when expr is written into by the program and its value changes. Not that this may not work for tracking arbitrary string value changes. For that use watch described earlier.