Forum Replies Created
-
AuthorPosts
-
supportKeymaster
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.
- 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. See this page for more information and detailed examples.
- 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.
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.
supportKeymasterHi,
This is by design. VisualGDB can automatically do things that are, well, automatable. ESP-IDF comes with various examples that can be built using the same CMake interface, so VisualGDB can automatically clone and build them for you. ESP-IDF uses KConfig to edit various configuration parameters, so VisualGDB offers a neat searchable GUI for working with them.
To our best knowledge, ESP-IDF does not come with a machine-readable description that would cover the functionality you described, hence VisualGDB cannot automatically do it.
supportKeymasterSorry, your trial expired a while ago. If you would like to get any further technical support, we would kindly ask you to purchase a license.
supportKeymasterPlease let us know the email associated with your license key, so that we could check your support status.
supportKeymasterHi,
VisualGDB takes the list of ESP32 devices from the <SysGCC>\esp32\esp32-bsp\BSP.xml file, so you can try editing it, although it may take a few attempts to get working correctly.
That said, ESP32C6 looks interesting, so we will try to get one within the next month, and will consider adding out-of-the-box support for it, if the new ESP-IDF branch works out-of-the-box.
The ESP32 debug methods package you mentioned was from last year (the latest update was still being tested). We have just released another one (20230309) based on the latest OpenOCD release from Espressif. Feel free to check the Espressif’s release logs for the exact list of changes.
supportKeymasterThe Arduino-based projects are different from the regular ESP-IDF projects. They rely on the Arduino framework (using the rules in the ESP32 Arduino core) to build and program the project. Programming FLASH for Arduino projects is done via the COM port (same when using the Arduino IDE).
If the regular ESP-IDF projects work, you can use VisualGDB to develop them via the ESP-IDF project wizard (not the Arduino project wizard).
If you are getting different behavior between the regular ESP-IDF projects and Arduino projects, it is likely caused by differences between the ESP-IDF framework and the Arduino framework (that internally uses a different version of ESP-IDF and a completely different set of rules to build the code). Using VisualGDB on top of either ESP-IDF or Arduino will not change the way the underlying framework operates and will not eliminate the differences between these 2 frameworks.
supportKeymasterHi,
Please find the answers to your questions below:
- You can program the memory via COM port by right-clicking on the project in Solution Explorer and selecting “Program FLASH Memory“
- You can prevent VisualGDB from programming FLASH memory during debugging via VisualGDB Project Properties -> Debug Settings -> Program FLASH Memory -> Never.
supportKeymasterSorry for the confusion, we will explain it below.
The latest stable VisualGDB version, that has fully passed all tests is 5.6r9 (build 4777).
The build 4807 is from our development branch (the latest build there is VisualGDB-5.6.109.4828.msi). This branch is updated very regularly, contains recently added features and fixes requested by our users, but has not fully passed all tests and might be less reliable than the official release.
We are currently finishing our work on the new tracing engine, that will first be published in the upcoming VisualKernel release, and will then make its way into VisualGDB 6.0 Beta 1. This Beta will include all the fixes from the development branch, including the one you mentioned. Until then, we would advise using the development build.
Substituting the build number would indeed get you the latest development build, however it normally shouldn’t be necessary, as the latest beta that will appear on the download page will include most of the recently added fixes.
supportKeymasterWe can point it out for you, however it would go through a different queue with a current turnaround of 2 business days. If you would like to get it done faster, please consider looking through the pages of VisualGDB Project Properties – most settings are placed very intuitively there.
supportKeymasterHi,
Visual Studio runs Clang as an external tool and applies the formatting instructions reported by it. This allows quickly switching between Clang versions, but has a few drawbacks, particularly when reformatting just one statement (e.g. when pressing ‘}’), and computing indentation for the new line.
VisualGDB uses a different approach – clang is integrated into our IntelliSense engine, so it continuously keeps a model of the current source file, and can apply more fine-tuned formats (and provide a GUI editor for formatting settings). The downside here is that switching to a newer clang requires updating our entire IntelliSense engine, and running extensive tests to ensure it won’t break any existing functionality.
We are currently finishing our work with the new tracing engine, that is being first released with VisualKernel (kernel traces generate huge volumes of data, so we use it to make sure the tracing engine is blazingly fast even under most heavy loads); updating the Clang engine to the latest LLVM/clang version is scheduled right after it.
supportKeymasterHi,
No problem and good to know it works. Feel free to submit merge requests via Github, or simply post them here or via the support form.
Also if you have further ideas about improvements we could do on our side, do not hesitate to share them with us.
supportKeymasterThis could be a bug in the Arduino framework, Espressif’s build of OpenOCD. You can try running OpenOCD and gdb manually to debug the same code – if the problem persists, the issue is caused by these tools, and using VisualGDB to launch them will not automatically fix the issue.
supportKeymasterIf the breakpoint is working, the FLASH should be programmed just fine (otherwise that code would never get executed).
If the LED is still not blinking, it’s something for you to figure out. All VisualGDB does is builds the code from the Arduino examples using Arduino build rules, and runs the result on the target using the ESP32 debugging tools. VisualGDB does not understand the code it is building/debugging and cannot fix it, or check that it makes sense for a particular target.
supportKeymasterHi,
This looks just fine. The program has been uploaded and started. The errors shown by OpenOCD should not prevent it from working.
You can double-check it by setting a breakpoint inside loop() – it should trigger soon after the program has started.
That said, please make sure that you do not modify the original sample code in any way until you confirm that you can debug it. Changing some parameters (e.g. controlling JTAG pins directly) would indeed stop debugging from working.
-
AuthorPosts