Page 1 of 1

Debugging: Stop program if variable = value ?

Posted: Tuesday 27th April 2021 2:30pm
by fox73
Hello out there.
I am a newbie to Gambas and try to find out, if the following is possible:

While debugging, I want the program to stop/break if variable xy has a determined value.
Can you do that with the Gambas IDE?

Thanks a lot.

Re: Debugging: Stop program if variable = value ?

Posted: Tuesday 27th April 2021 2:38pm
by cogier
Just put a Stop in the code where you want it to stop and then highlight the variable to see its value.
Public Sub Form_Open()

  Dim sDir As String[] = Dir(User.Home &/ "Pictures")

  Stop

End
Image

Re: Debugging: Stop program if variable = value ?

Posted: Tuesday 27th April 2021 3:55pm
by stevedee
fox73 wrote:
Tuesday 27th April 2021 2:30pm
...While debugging, I want the program to stop/break if variable xy has a determined value.
Can you do that with the Gambas IDE?
That's a great question.
It doesn't look like this feature is included in Gambas breakpoint options.

I did find that if you run code until it stops at a line breakpoint, the breakpoint window changes, and you get an "Add Expression" option via an eye-ball icon.
But I can't see how to use this.
GambasAddExpression.png
GambasAddExpression.png (73.84 KiB) Viewed 478 times
Breaking on a variable value would be a valuable inclusion to the Gambas IDE. Its far more useful in some situations than a line breakpoint.

For example in this code, it would be great to be able to break when (say) x = 2000:-
  For x = 0 To 10000
    'do stuff
  Next

Re: Debugging: Stop program if variable = value ?

Posted: Tuesday 27th April 2021 4:30pm
by 01McAc
I suppose a
if x=0 then stop
will do the trick.

Re: Debugging: Stop program if variable = value ?

Posted: Tuesday 27th April 2021 4:30pm
by fox73
Hello cogier,
thanks for your reply. I know the possibility to place a break on a line and then display the value by clicking on the variable.
But this "hard break" is not, what I am looking for.

I am looking for a "smart break" that stops at the line, where an determined condition is reached, without knowing in advance at what line of the code.
It's as stevedee wrote in his example.I know this feature from tibe IBM z/OS mainframe tool DEBUG and it would be great to have it in Gambas, too :-)

Re: Debugging: Stop program if variable = value ?

Posted: Tuesday 27th April 2021 4:46pm
by stevedee
01McAc wrote:
Tuesday 27th April 2021 4:30pm
I suppose a
if x=0 then stop
will do the trick.
Yes, that's the kind of workaround I would use, but I'm beginning to suspect there are existing features (which are pretty standard in other languages IDEs) that I either don't know how to enable or maybe they are broken.

For example there is both an Add Expression and an Add Watches button that I can't figure out.

I've only just discovered that after you stop program execution, you can then change the current value of variables...that's handy!

That is why I said fox73's question was a good one...its got me thinking about things I've taken for granted for years.

Re: Debugging: Stop program if variable = value ?

Posted: Tuesday 27th April 2021 5:21pm
by 01McAc
stevedee wrote:
Tuesday 27th April 2021 4:46pm
I've only just discovered that after you stop program execution, you can then change the current value of variables...that's handy!
Sounds interesting, I didn't know this. VB is able to change values in debug mode - but Gambas? How would you do this?

Re: Debugging: Stop program if variable = value ?

Posted: Tuesday 27th April 2021 5:46pm
by stevedee
01McAc wrote:
Tuesday 27th April 2021 5:21pm
...VB is able to change values in debug mode - but Gambas? How would you do this?
Pause execution using a line breakpoint, then double click on the variable's value in the Local variable list and type the new value.
GambasChangeVar.png
GambasChangeVar.png (32.29 KiB) Viewed 469 times
Yes, VB6 was great for debugging; you could pause execution, drag the execution point back a few lines, and then get it to re-execute the lines again!