Вы, вероятно, не размещаете команды на той точке останова, о которой думаете.
На вашем месте я бы изменил сценарий следующим образом:
define setup
handle SIGTRAP noprint nostop
br 'Class1::Fun1(void)'
run
br 'Class2::Run(void)'
c
br Function2
commands
return 0
c
end
end
Если цель останова не указана, commands
связывается с самой последней точкой останова. Таким образом, независимо от того, какие другие точки останова у вас есть в сеансе GDB, ваши команды будут связаны с точкой останова на Function2.