audetto/AppleWin

Debugging Improvements Feature Requests

Closed this issue · 12 comments

I was wondering if it will be possible to control the debugger like the windows version with its keyboard shortcuts, or to add them as buttons to the Debugger window itself?

The Debugger window is infinitely better in the Linux version with SDL than windows, but it just lacks the ability to control it quickly, and is very mouse driven. When I'm stepping into / out of code, it would be much nicer with keyboard control to step / step into / step over / step return / view return etc, all of which can be done with various modifiers with the space bar, or other keys in the windows version; though I'd prefer a more F7/F8 etc approach to this in line with most modern IDE debugging.

Some of the features I miss from windows version:

  • trace over instruction (i.e. don't go into JSR, just let it run until RTS) - can be emulated by tickbox on next line and hitting continue, but that's several operations to perform with the mouse; check on, click continue, check off, so quite slow when debugging (windows: "ctrl + space")
  • run until cursor - currently there isn't really the concept of a cursor afaict, but the mouse does allow highlighting other lines, so something around this. again, a work around is ticking the line and just clicking continue, so this isn't difficult to emulate, just slow (windows: "ctrl + down arrow")
  • jump cursor to return address on stack - useful for when you're deep in a called function and want to peel back to where you came from easily. A display of the list of the stack returns would also be very useful, clicking on them jumping the view to that location so you can see the "call stack" (windows: "left arrow")
  • change current running instruction to cursor - can be done with direct "r pc 'address'" but a UI way to do it would be nice (windows: "ctrl + right arrow")
  • Is it possible to add multiple memory views? commands like "m1 0600" work, but don't do anything in SDL version. It's really useful though to have multiple viewports showing memory ranges, so you don't have to keep setting ranges to jump between them. (windows: using m1/m2/ma1/ma2 etc).
  • using "up" arrow on the Prompt scrolls through previous commands. this isn't in windows version, but would be nice to recall previous commands and alter them (new feature)
  • switch between CPU and Console tabs with "TAB" key (windows: TAB)
  • A key to execute current line (windows: "space")

Many thanks again for building this linux version and keeping it in sync with the upstream version, it's an absolute joy to use.

  1. I have learnt how to handle key events in ImGui, so I have implemented "space", "ctrl-space" and "shift-space".

  2. history in the input text seems easy too, so I will do it.

  3. TAB switching, I am not sure.

  4. memory view, I need to see where to display it.

  5. disassembly and cursor: need to see if I can retrieve it.

Thank you for these!

Done history, and some more ctrl-arrows for the debugger.

Any suggestion on how to display memory? Something similar to the existing memory window or exactly what AppleWin shows?

Thankyou again, I'll pick this up in a couple of days as I'm away at the moment.

For the memory windows though, I would definitely extend the idea of the existing memory window, maybe just have the ability to have multiple of them would be good enough.

I often just want to look at 3 or 4 locations at once when doing Atari debugging in Altirra, with the ability to stack them in (e.g) 2x2 formation in same window, but most importantly that they can be seen at the same time without having to click tabs for them, so if split view isn't easy, just the ability to have several open (Altirra does up to 4 views of memory at the same time) would be sufficient.

I've added TAB cycling as well. A little bit more complicated that I wished, due to a focus-grabbing issue.

Something like this?

image

yes, perfect, if those lines between sections are movable in standard ImGUI manner so you can see more of that particular section that would be great.

I just flew back from US where we were promoting the FujiNet device, and the virtual version of that, which we have added extensions to a port of AppleWin to communicate with, and people will be downloading a VM version of that we're maintaining, so we're bringing in an audience of new AppleWin Linux users, so thankyou for this.

if those lines between sections are movable in standard ImGUI manner

you will have to provide me an example of this.

Or, I could make them into tables with a certain range accessible with a scrollbar, but then I am re-writing the memory viewer...

I think I found what you meant

image

they are resizable and show up to 32 lines.

Yes, that's it. Sorry I didn't get chance to reply previously. They look really good!

Many many thanks for this.