Debugger vs. Build Settings

I’m a little confused by the interaction of Xojo IDE Build Settings and the Debugger.

I’m running on macOS (Intel) with these settings:

image

Settings for macOS and This Computer:
image

When I Project / Run, the app compiles and I end up with a debug app which is x86_64.

This is sensible, but makes me wonder:

If debug Run ignores the Architecture settings, what other Build settings does it honor or ignore? I think that it honors the Shared / Build / Optimization Level setting, right?

1 Like

I’m under the impression that Project/Run ‘builds’ a debug version that can be run on the computer you are running.

It makes sense to do it as if I have a Windows Lite license but I’m running the IDE on a Mac, I’m not forced to always do a remote debugging into a Windows machine.

So I don’t think this setting is ‘ignored’ but Build <> Run (debug run).

1 Like

I’ve always read it as those are the Build settings (when you build the app, not when you’re debugging).

So I haven’t (naturally?) expected them to affect debug builds.

Not saying you’re wrong, but my thinking more aligns with what @AlbertoD just wrote. :slight_smile:

2 Likes

Further confusions:

  • if you are Remote debugging, it makes less sense for the debugger to override your Architecture settings. What happens in this case?
  • Xojo WebApp target has a Xojo Cloud build target, but no longer has a This Computer target. Why?
    image

After using Xojo for many years, I realized that I basically don’t understand This Computer so I always just turn it off out of fear :laughing:

Well of course. It ca hardly try to run an ARM executable on your intel machine now, can it.

No. IIRC there was a thread about this fairly recently. All debug runs use the lowest optimisation, because at higher levels of optimisation some of your code might no longer exist, whcih was confusing folks when stepping through the code.

If you are doing remote debugging, you’re going to want a build that matches OS and hardware of the remote machine. Nothing else makes any sense.

Agree, but how does one specify this?

I just read Debugger usage — Xojo documentation

and
https://documentation.xojo.com/topics/application_structure/desktop/desktop_apps.html#build-settings

And do not find these questions answered.

Also, if you are running on macOS (Apple Silicon/ARM) you probably do want the ability to specify whether the debug build is Intel or Arm, since being able to optionally test under Rosetta is important.

1 Like

Xojo Web never had ‘This Computer’ (at least since I’m using Xojo).
I think the ‘My Computer’ option in Desktop should be removed because is better to check the Target that you are building for.

Why is not there? Because there is no need to have ‘My Computer’ as an option.

Run (debug) is not the same as Build.

May be nice to Run and create Silicon or Intel version, the same for Workers with Run they are not the same as Build. I guess if you want to test as a final product then you need to Build to make sure you have everything the same as your users.

Well you don’t have to. The debugger stub that runs on the remote machine will, when you select Remote Debug and choose a target, inform the IDE of what is required. Or at least, that would be one way to do it.

Now, there might be an issue of one’s wanting to specify the hardware type in order to test native vs. Rosetta; presumably one then sets the target hardware in the build settings. I know that for some time a mistake I kept making when remote debugging to a Pi was exactly to forget to set the target hardware to ARM. The debug build would be downloaded to the PI after which - nothing happened.