A dry run is the process of a programmer manually working through their code to trace the value of variables. There is no software involved in this process.
Traditionally, a dry run would involve a print out of the code. The programmer would sit down with a pen and paper and manually follow the value of a variable to check that it was used and updated as expected. It is not uncommon for programmers to carry out a dry run when reading the code on screen rather than using a pen and paper.
If a programmer found that the value is not what it should be, they are able to identify the section of code that resulted in the error. Characteristics of a dry run are:
carried out during design, implementation, testing or maintenance
used to identify logic errors
they will not find execution errors
Dry runs are not usually formally set in a test plan and can be carried out at the discretion of the programmer as and when necessary. For this reason it is feasible that a dry run could be conducted at various stage of the development process.