Forum Replies Created
-
AuthorPosts
-
support
KeymasterHi,
Indeed, the custom build/debug steps, are shared between multiple project configurations. The easiest way to have run different actions depending on the configuration platforms is to use the “Reference a reusable action list” action with a variable-based path (e.g. $(PlatformName).vgdbxactions).
The user variable values are stored in per-user files (e.g. <Project>.<UserName>.user), so having them differ between platforms would cause conflicts. Instead, we would advise having the variables for all platforms defined together, and then using them depending on the platform, e.g.:
- The variable list defines DeployHostARM and DeployHostX86
- The ARM platform references $(DeployHostARM)
- The X86 platform references $(DeployHostX86)
If this doesn’t work, feel free to let us know more about your setup, and we will try to suggest a better layout.
support
KeymasterPlease note that VisualGDB is a productivity tool for software developers. It can make developers more productive by providing convenient GUI for common time-consuming tasks, and integrating various external tools into Visual Studio, so that they are always a few mouse clicks away.
We are able to offer VisualGDB at affordable price, because we focus on developing and supporting functionality that works the same way for multiple users, hence the development and testing effort is reused between multiple license holders.
We also receive a huge amount of inquiries asking to fix a specific broken project, help make the correct design choice, explain how a specific C++ feature works, or assist porting a library to a different platform. These inquiries require considerable effort to research and communicate the best solution. They do not scale between multiple users. I.e. helping one user solve this type of problem will not automatically help other users. It also does not help the same user avoid the same type of problem in the future. Hence, we are not able to address them within our regular support. If we included this type of help in our support, we would simply not have sufficient resources to provide it at the current license prices, or to allocate any resources to VisualGDB development.
We are happy to offer project-specific help via our consulting service per Zoom, TeamViewer or any other screen sharing service of your choice. We charge a fixed consulting rate for these sessions (billed in 1/2-hour increments), and are happy to solve any problems our users encounter. The rate includes a detailed follow-up email at the end of the session, that includes an overview of the used techniques and a summary of solved problems and future recommendations.
Alternatively, please consider browsing our documentation and tutorials. Our documentation lists most VisualGDB settings, and the tutorials show how to use VisualGDB for in many real-world scenarios. Our technical support is limited to issues in VisualGDB itself, that can be reproduced from scratch per our problem reporting guidelines (i.e. do not depend on external projects that can potentially contain errors).
support
KeymasterHi,
The i.MXRT devices might require additional initialization in order to get some parts of the memory working. MCUXpresso would do it automatically (since it has proprietary device definitions), while the OpenOCD tool you are currently using with VisualGDB may require scripting it manually. Another option would be that some build-time options are set incorrectly.
In general, you can try using Embedded Quick Debug on the ELF file produced by the MCUXpresso IDE. If it works fine with VisualGDB, the issue is due to the build settings. You can try dumping the memory layout of both images with objdump and comparing them to see what could be causing the difference.
If debugging the image produced by MCUXpresso IDE is not working, you may need to run some additional initialization on the OpenOCD level. You can try issuing the “monitor mdw” and “monitor mww” commands via the GDB Session window to read/write various memory addresses directly via OpenOCD, and use it to understand what memory regions are turned off, and enable them by writing the device configuration registers.
Another option would be to try Segger J-Link with the J-Link software. It provides better out-of-the-box support for many devices, compared to OpenOCD, and VisualGDB works with it just fine.
support
KeymasterGood to know it works.
There was indeed a bug preventing VisualGDB from turning on the SSH command line limit mitigation, and we fixed it in this release. Also the 131K shell limit should no longer be a problem with GoogleTest, as the long GoogleTest command are now passed via a command file that is directly read by the GoogleTest framework, completely bypassing the shell (similar to GCC response files).
Regarding the test discovery, it looks like it’s caused by some combination of VS test display rules and your project configuration. Please try reducing the problem to something that can be reproduced from scratch (i.e. a solution with 2 freshly created projects). Once you can point to specific settings triggering it, we should be able to suggest a workaround or release a hotfix.
support
KeymasterHi,
Please contact Espressif for information on compatibility between specific ESP-IDF releases and toolchain versions.
support
KeymasterUnfortunately, it is hard to suggest anything specific based on the description you provided.
In order for us to provide any help with this, we need to be able to reproduce the problem on our side.
Please provide complete and detailed steps to reproduce the issue as described below:- The steps should begin with launching Visual Studio. They should include every step necessary to create the project from scratch and reproduce the issue.
- Please make sure the steps do not involve any 3rd-party code as we will not be able to review it. If the problem only happens with a specific project, please make sure you can reproduce it on a clean project created from scratch.
- The steps should include uncropped screenshots of all wizard pages, VisualGDB Project Properties pages and any other GUI involved in reproducing the problem. This is critical for us to be able to reproduce the problem on our side.
You can read more about the best way to report VisualGDB issues in our problem reporting guidelines, If you do not wish to document the repro steps and save the screenshots, please consider recording a screen video instead and sending us a link to it.
Please note that many VisualGDB issues are caused by selecting an incompatible combination of settings at some point. We are generally not able to review specific projects and find the specific settings that were set incorrectly. We recommend checking the projects into source control and keeping a track of all changed settings to avoid breaking the projects.
You can also try checking various diagnostic output from various parts of VisualGDB as described on this page. Although we won’t be able to review it for a specific project unless the we can reproduce the problem from scratch, checking it might provide some clues on what is causing the unexpected behavior.
support
KeymasterHi,
The regular OpenOCD GUI is indeed optimized for running OpenOCD locally – it can automatically find the supported JTAG/SWD probes, install drivers, locate device scripts, etc.
If you would like to run OpenOCD remotely, please try selecting the “Full-custom” debug method instead of OpenOCD. It allows specifying arbitrary target connection commands, and will not attempt to do anything beyond what is explicitly configured.
May 19, 2022 at 08:33 in reply to: openocd settings for JTAG debugging ESP32-WROOM-32 on custom board #32653support
KeymasterHi,
Based on the log, it looks like the connection has been established.
Could you please describe a bit more what is happening: does Visual Studio show that a breakpoint has been set (i.e. shows it as a solid circle)? What happens if you use the Debug->Break All command to pause the target?
Please also try attaching a gdb log – it will show what is going on.
support
KeymasterHi,
Sorry about that. We were doing some resource-related refactoring in our development branch, and it resulted in a few broken references in the daily VisualGDB builds. We have fixed it in the latest build: VisualGDB-5.6.105.4588.msi
support
KeymasterSorry, this is not something VisualGDB directly controls. All we can suggest is to try contacting the board manufacturer or the debug probe manufacturer.
support
KeymasterHi,
Unfortunately, it is hard to suggest anything specific based on the description you provided.
In order for us to provide any help with this, we need to be able to reproduce the problem on our side.
Please provide complete and detailed steps to reproduce the issue as described below:- The steps should begin with launching Visual Studio. They should include every step necessary to create the project from scratch and reproduce the issue, as many issues are triggered by specific combination of project/target settings.
- The steps should include the expected/observed behavior, so that we could follow them on our side and compare the outcome.
support
KeymasterHi,
Thanks for checking the debug output. Indeed, the stripping logic was not working with the custom imported toolchains, that internally use the $(ToolchainDir) syntax. We have fixed it in the following build: VisualGDB-5.6.105.4579.msi
support
KeymasterHi,
The “Strip debug symbols during deployment” option simply runs the toolchain’s objcopy executable on the primary output of each project before deploying it:
...-objcopy.exe --strip-debug <ELF file> <ELF file>-stripped
The <ELF file>-stripped file is then deployed to the target and deleted locally.
You can double-check what is going on by checking View->Other Windows->VisualGDB Diagnostics Console. You can also try running your toolchain’s objcopy executable (on the build machine) on the deployed ELF file to see if it manages to strip the symbols.
support
KeymasterHi,
The only fully tested & supported way to do this would be to use the Embedded CMake project subsystem (see this tutorial). You might be able to get it working with MSBuild as shown below:
- Follow the CMake tutorial to get a reference test project that builds and runs without hardware.
- Create a regular Win32 MSBuild executable. Manually add the unit test framework to it via VisualGDB Project Properties. Adjust the project until it builds and runs as well, using #1 for reference.
- Follow the MSBuild Platform tutorial to merge the settings from #2 into your main project. For MSBuild projects, VisualGDB only cares about the currently selected platform/configuration, so if you manually copy all settings (including the references to .vgdbsettings files) between projects, it will copy the related behavior regardless of what is defined in other configurations/platforms.
That said, this setup was never tested, and may trigger weird bugs. Proceed at your own risk only if you are comfortable patching MSBuild files and troubleshooting possible errors caused by it.
support
KeymasterThanks for renewing your license.
Normally, GDB would automatically search for libraries with symbols in its sysroot directory on the Windows machine (use the “show sysroot” command to find it out). However, you can override this behavior by issuing the set solib-search-path command via the GDB Session window, or adding it to VisualGDB Project Properties -> Additional GDB Commands.
Note that the library on the Windows machine must match the library loaded on the target, otherwise gdb would use incorrect addresses for most symbols, resulting in unpredictable behavior.
-
AuthorPosts