Подумайте о функциональных уровнях согласно следующему псевдокоду:
1 x = 0
2 y = 0
3 call 8
4 x = 5
5 y = 7
6 call 8
7 halt
8 print x
9 print y
10 call 12
11 return
12 print x + y
13 print x * y
14 return
Команды в основном "запускаются до наступления события". Это событие приводит к сбою отладчика (остановка выполнения и ожидание вашей команды).
Команда "gu
" выполняется до тех пор, пока не достигнет следующего наивысшего уровня стека. Если вы находитесь на строках 8, 9, 10 или 11, вы получите 4 или 7 в зависимости от того, "call 8
" вызвал этот код. Если вы на линии 12, 13 или 14, вы сломаете на 11.
Думайте об этом как о работающем, пока вы не переместитесь вверх по стеку. Обратите внимание, что если вы сначала спуститесь, вам придется подняться дважды.
Команда "pc
" выполняется до следующего вызова, поэтому, если вы находитесь в строке 1, она будет прерываться в строке 3. Это своего рода противоположность "gu
", поскольку она останавливается, когда пытаясь уйти вниз уровень стека.