support

Forum Replies Created

Viewing 15 posts - 5,071 through 5,085 (of 7,879 total)
  • Author
    Posts
  • in reply to: Type visualizers and inheritance #12238
    support
    Keymaster

    Hi,

    OK, please try this build: http://sysprogs.com/files/tmp/VisualGDB-5.3.7.1762.msi

    We have added a new field called VSPropertyObject to the ExpressionValue class. You can set it to your own implementation of IDebugProperty3. VisualGDB will forward calls to GetCustomViewerCount(), GetCustomViewerList(), CreateObjectID() and DestroyObjectID() to this object.

    in reply to: Switching from Atollic, my evaluation so far. #12237
    support
    Keymaster

    Hi,

    There is no documentation on the internal real-time watch protocol (as it’s a fairly rare customization), however our profiler framework includes sources for all target-side code involved in real-time watches, so it’s relatively easy to reverse-engineer it.

    We would recommend starting with creatinga test project similar to the one shown in the blog post. Then add several instances of ScalarRealTimeWatch and ensure they work.

    When you add a ScalarRealTimeWatch object to the real-time watch window, VisualGDB detects its type and sets the “enabled” field. Then it expects the real-time watch data stream to contain packets of the following structure:

    <scalar real-time watch updated>: <variable address> <new value>

    You can emulate this by creating your own implementation of ScalarRealTimeWatch linked to a global variable in your program. Once enabled is set it should configure the ITM registers to trigger when the linked variable is modified and your client-side code should read the ITM messages and translate them into the real-time watch protocol (note that you will need to report the address of the watch object, not the original variable).

    BTW, if you’re willing to publish the sources for the plugin under a permissive license, we will be happy to fork it on our Github repo, include it into the VisualGDB distribution and support/maintain it officially.

    in reply to: Support for external flash on STM32F7 Disco #12236
    support
    Keymaster

    Hi,

    Yes, our OpenOCD fork includes support for FLASH programming plugins. Please follow this tutorial for details.

    in reply to: ESP No Debug Settings Window #12235
    support
    Keymaster

    Hi,

    Looks like you are using an older preview build of VisualGDB 5.3.

    Please update to the latest 5.3 Preview 7.

    in reply to: License Purchase Questions #12234
    support
    Keymaster

    Hi,

    VisualGDB is licensed per seat (a computer/user combination). Hence one license will allow using VisualGDB on one computer by one user. After the initial year the license will continue working, however you will no longer be eligible for technical support and you won’t be able to update to VisualGDB versions released after the year ran out. Alternatively you can always renew your license (currently the renewal price is 50% of the regular price).

    in reply to: nRF52840 #12220
    support
    Keymaster

    Hi,

    We have just retested it with the nRF52840 (PCA10056) and could not reproduce any issues. Do you get this error with all projects (including the basic “Blinking LED”) or only with some specific projects?

    in reply to: Type visualizers and inheritance #12219
    support
    Keymaster

    Good to know it works.

    With the free option, VS supports custom viewers for watches via the GetCustomViewerList() method. We can easily modify the VisualGDB engine to return an array of DEBUG_CUSTOM_VIEWER structures provided directly by your visualizer. You would then need to figure out how to connect this with the VS internals and let VS load the actual visualizer.

    If you want us to figure this out instead and provide you with a simple WPF-based interface for custom viewers, we can do that for a small fee (please contact sales via the support form to get a quote).

     

    in reply to: Switching from Atollic, my evaluation so far. #12218
    support
    Keymaster

    Thanks, we’ll keep this in mind when designing our stack analyzer.

    The custom real-time transport mechanism is not documented (and is currently only used in our internal tests), so we’ll provide an overview here. First of all, please use this build as it publishes all necessary interfaces properly: http://sysprogs.com/files/tmp/VisualGDB-5.3.7.1760.msi

    Then you would need to create a new .Net library in C#, reference the VisualGDBExtensibility.dll assembly and add the following class there:

       public class ExtensionFactory : IVisualGDBExtensionFactory
        {
            public IVisualGDBBuildExtension CreateBuildExtension(IVisualGDBProjectContext project) => null;
            public IVisualGDBDebugExtension CreateDebugExtension(IVisualGDBProjectContext project) => new Extension();
            public IVisualGDBDesignExtension CreateDesignExtension(IVisualGDBProjectContext project) => null;
    
            class DataSource : ICustomRealTimeWatchDataSource
            {
                private SerialPortStream _Stream;
    
                public event ThreadStart ResetDetected;
                public event RealTimeWatchDataReceived DataReceived;
    
                public void RunFromWorkerThread()
                {
                    _Stream = new SerialPortStream("COM16");
                    byte[] data = new byte[65536];
                    for (; ; )
                    {
                        int done = _Stream.Read(data, 0, data.Length);
                        DataReceived?.Invoke(data, 0, done);
                    }
                }
    
                public void Stop() => _Stream?.Dispose();
            }
    
            class Extension : IVisualGDBEmbeddedDebugExtension
            {
                public ICustomRealTimeWatchDataSource RealTimeWatchDataSource { get; } = new DataSource();
                public void AdjustToolCommandLine(DebugTool debugTool, ref string executable, ref string arguments, ref string workingDirectory) { }
                public void Dispose() { }
                public void OnGDBSessionStarting(IGDBSession gdbSession, ref bool bypassNormalStartupCommands) { }
            }
        }

    Replace the RunFromWorkerThread() method with what makes sense for your implementation. Then add a <ProjectExtension> element to the .vgdbsettings file (under  VisualGDBProjectSettings2) pointing to your plugin DLL.

    In your application replace the implementation for the SysprogsProfiler_WriteData() function with your own one that will channel the pdcRealTimeAnalysisStream stream over your custom channel. Note that SysprogsProfiler_WriteData() is called with the interrupts disabled, so it should not rely on any interrupt handlers.

    As long as the data passed to DataReceived exactly matches what was sent by the profiler framework via calls to SysprogsProfiler_WriteData(), VisualGDB will parse it correctly and the real-time watch GUI (including any custom events used to report your variables) will work.

     

    in reply to: Custom RTOS support fails at stack-list-frames #12215
    support
    Keymaster

    The hang could be caused by an issue we recently discovered and fixed. Please try this build: http://sysprogs.com/files/tmp/VisualGDB-5.3.7.1759.msi

    If the problem persists, please try checking the gdb log for the last commands issued by VisualGDB (you can enable diagnostic gdb logging via the Advanced GDB Settings page of VisualGDB Project Properties).

    in reply to: .map file for static library #12214
    support
    Keymaster

    Hi,

    Static libraries are just archives containing multiple .o files. As their creation does not involve linking (i.e. combining multiple .o files into a single image), no .map file can be generated for them.

    in reply to: Debugger setup for Black Magic Probe? #12206
    support
    Keymaster

    Could you confirm that running the same gdb commands manually (in a gdb instance started from command line) works? If yes, please share the full gdb log (can be enabled on the Advanced GDB Settings page of VisualGDB Project Properties) and we will investigate.

    support
    Keymaster

    Hi,

    Good to know it works. If you encounter further issues, feel free to start another topic.

    in reply to: nRF52840 #12204
    support
    Keymaster

    Hi,

    VisualGDB takes the list of supported devices from the MCU.CSV file in the Segger Software directory.

    It looks like the nRF52840_xxAA device is supported, but not listed there. We will contact Segger support for clarification. As a workaround, please try adding an entry to the CSV file manually so that VisualGDB can recognize it.

     

    in reply to: Strange optimization problem TIM4 #12199
    support
    Keymaster

    Hi,

    This could be caused by a bug somewhere in the code (e.g. uninitialized variable or missing ‘volatile’ keyword) that only takes effect when the code is optimized. We would advise locating the code responsible for setting the hardware registers and stepping through it in disassembly mode to understand what is going on.

    in reply to: Debugging failed #12198
    support
    Keymaster

    Hi,

    Looks like you are using an older v5.3 Preview build. Please try updating to the latest Preview 7.

Viewing 15 posts - 5,071 through 5,085 (of 7,879 total)