View Full Version : Teensy GDBStub Debugging via Serial with VS Integration

06-23-2020, 06:03 PM
Using the amazing GDBStub Library for Teensy 3/4 by Fernando Trias (https://github.com/ftrias/TeensyDebug), you can now have the GDB experience on Teensy 3/4 without any additional hardware!

With the Teensy servicing multiple Serial Ports you don't lose your Serial output or need extra hardware.

This has been integrated into Visual Micro with the familiar menu options used for Serial and other Hardware Debugging in our latest release

All Standard GDB Features are readily available:
Step by Step execution using breakpoints, with navigational Into / Over / Out functions as well
Add breakpoints dynamically at runtime without rebuild / upload
Conditional breakpoints
Editable Watch / Local / Autos Windows
Call Stack Tracing
And More...

Further Information and a Video Example of this GDB Stub in Action in Visual Micro are below:
GDBStub Arduino Library for Teensy 3/4 by Fernando Trias (https://github.com/ftrias/TeensyDebug)

Visual Micro VS Extension Website (https://www.visualmicro.com/)

Visual Micro Documentation (https://www.visualmicro.com/page/Teensy-GDBDebugging.aspx)

You Tube Video of Teensy GDB Stub Setup + Debugging in Action in Visual Micro (https://www.youtube.com/watch?v=jLMXFJ43p1o)


07-04-2020, 05:37 PM

As I mentioned on thread up on VisualMicro(https://www.visualmicro.com/forums/YaBB.pl?num=1593297620/0#9)
This will come in handy to help debug some stuff including some hexapod code.

The YouTube video helped understand setting this up.

For awhile I was having difficulty figuring out how to get breakpoints set changed. But I believe now you can only change the breakpoints while already in the debugger and/or if you set a breakpoint and then recompile reconnect...

So I added code that makes it easier for me with the hexapod code. I added simple command in my terminal monitor code as well as if I press the L3 button on my PS3 and if GDB is connected, I use the halt() macro and it breaks into the debugging. At which point I can now change the state of breakpoints, add new ones...

So again thanks to both @ftria as well as VisualMicro, it is nice to have another option on how to debug stuff on a Teensy!

07-05-2020, 05:04 PM
Forgot to mention, what gotcha that I have found using Visual Studio,

Is their library search order does not match the Arduino Search Order.

For example with a current build of my Hexapod code, Arduino tells you:

Multiple libraries were found for "LSS.h"
Used: C:\Users\kurte\Documents\Arduino\libraries\LSS_Lib rary_Arduino
Not used: C:\Users\kurte\Documents\Arduino\libraries\Lynxmot ion_Smart_Servo_-LSS-
Multiple libraries were found for "SoftwareSerial.h"
Used: C:\Users\kurte\Documents\Arduino\libraries\Softwar eSerial
Not used: C:\arduino-1.8.13\hardware\teensy\avr\libraries\SoftwareSeria l
Multiple libraries were found for "ST7735_t3.h"
Used: C:\Users\kurte\Documents\Arduino\libraries\ST7735_ t3
Not used: C:\arduino-1.8.13\hardware\teensy\avr\libraries\ST7735_t3
Multiple libraries were found for "SPI.h"
Used: C:\Users\kurte\Documents\Arduino\libraries\SPI
Not used: C:\arduino-1.8.13\hardware\teensy\avr\libraries\SPI
Multiple libraries were found for "USBHost_t36.h"
Used: C:\Users\kurte\Documents\Arduino\libraries\USBHost _t36
Not used: C:\arduino-1.8.13\hardware\teensy\avr\libraries\USBHost_t36
Using library TeensyDebug at version 0.0.1 in folder: C:\Users\kurte\Documents\Arduino\libraries\TeensyD ebug
Using library EEPROM at version 2.0 in folder: C:\arduino-1.8.13\hardware\teensy\avr\libraries\EEPROM
Using library LSS_Library_Arduino at version 1.3.1 in folder: C:\Users\kurte\Documents\Arduino\libraries\LSS_Lib rary_Arduino
Using library SoftwareSerial at version 1.0 in folder: C:\Users\kurte\Documents\Arduino\libraries\Softwar eSerial
Using library ST7735_t3 at version 1.0.0 in folder: C:\Users\kurte\Documents\Arduino\libraries\ST7735_ t3
Using library SPI at version 1.0 in folder: C:\Users\kurte\Documents\Arduino\libraries\SPI
Using library USBHost_t36 at version 0.1 in folder: C:\Users\kurte\Documents\Arduino\libraries\USBHost _t36

But when I load this into VisualMicro, it instead will use:

Not used: C:\arduino-1.8.13\hardware\teensy\avr\libraries\ST7735_t3
Not used: C:\arduino-1.8.13\hardware\teensy\avr\libraries\USBHost_t36
But for me is more of an issue as I do developement work on those two libraries, and for example with the USBHost code I am using a different branch with additional Bluetooth support

My current fixes for this (after I remember to do after new version of Teensyduino installed) is to remove the versions from Teensyduino and then have the VisualMicro than rescan...

Again not a big deal, but just something to keep an eye out for.

07-07-2020, 04:16 PM
Not sure if these posts are helping anyone, but thought I would give a few updates from things I have played with plus responses and information from Visual Micro.

Things like: When you are setup for DualSerial, how do you view/send data to your Serial object...
What I was doing was: change the comm port as part of the drop down and then press the button the right of it (Open Serial Monitor). But there is a different way:
Click on the vMicro Tool bar button, go to the general menu and then choose the Monitor Alternative item which has drop down with Serial ports.

Also I asked about with the GDBStub which has command line extensions, can I access these?
They put up a page that shows you how to do so:

Now back to playing