Which are common misconceptions about code execution? How to efficiently debug my student?
I may add to this as ideas occur to me, but here is a starter version. 

You don't state the general academic level of the student, so I'll assume secondary school or beginning university. The student has studied Algebra at least and has some background in math. 

The second really big misconception is that a program is just like math. In particular, in C, the misconception that a statement like


  x = y + 1;


is an equation to be solved, rather than an operation to be performed. But this is based on the first misconception that a "variable" in algebra is the same sort of thing as a "variable" in programming (in C like languages). In fact, in algebra, a variable doesn't vary, it is a fixed but possibly undetermined value. In C, the value can vary. In algebra, the above represents a relationship. In programming it is an operation. So, first, solve those two possible misconceptions with examples, exercises, and explanations as necessary. Once you do that ++y makes some sense as an operation. 

The third big misconception is just that a computer executes an algorithm, which is a sequential execution of defined steps. The program counter, PC, keeps track of the "current state" of the algorithm. In the while loop, the test only gets executed when the PC comes to it in an unrolling of the loop into a sequence of operations. 

My personal preference is to teach "variables" as "references to values" not as contents of memory locations. So 


  x = 5;


means that x refers to 5, not that it is 5. Then you avoid the problem that if the next statement is 


  x = x + 1;


that the student thinks that five has magically become six. It is just that now x refers to a different value. 



Caveats. 

Note that I'm assuming C-like languages. In lisp-like languages algebra variables and lisp "variables" are actually the same - undetermined/unspecified but immutable values. Also in Fortran IV, you could actually make five magically turn into six. History lesson there, though. 

And, of course, modern high performance computers aren't strictly sequential anymore, with speculative execution at branch points. 

In fact, with a bit of finesse you can discuss a C program with no reference to any actual machine at all. It defines an algorithm. Full Stop. The finesse part is just about the PC mentioned earlier.