support

Forum Replies Created

Viewing 15 posts - 3,316 through 3,330 (of 7,873 total)
  • Author
    Posts
  • in reply to: Custom build steps after linking #24285
    support
    Keymaster

    Hi,

    As VisualGDB supports many different build systems, its custom action logic treats build as a single “black box” step, hence they will indeed run after the build regardless of the actual steps performed during the build. If you would like a finer-grain control over this, we would advise creating custom targets with the build system you are using (e.g. see this tutorial for custom MSBuild targets) or try searching CMake documentation if you are using CMake (stripping symbols is a fairly common task, so there might be ready-to-use snippets posted on StackOverflow or other forums).

    If you don’t want to modify the build system settings, please consider changing your file structure so that the custom actions won’t overwrite any files. E.g. copy $(TargetPath) to $(TargetPath).target, then move debug symbols to $(TargetPath).debug and finally strip $(TargetPath).target. You would need to update the debug and deployment settings to deploy/launch $(TargetPath).target instead of $(TargetPath), but as long as you do that, the building and debugging will work as expected and the symbols won’t get lost.

    in reply to: VisualGDB running as TFS remote build failure #24284
    support
    Keymaster

    This looks like you have updated the VisualGDB binaries, but might be still using the MSBuild targets files from the old version. Please double-check that the project builds with VisualGDB 5.4 from Visual Studio and that the SysprogsPlatform.targets and other MSBuild files on the TFS machine match the corresponding files on the machine where the build succeeds.

    in reply to: BIN file size ecxeeds flash size with no error #24267
    support
    Keymaster

    No problem. We have investigated this and confirm that the syntax used in the VisualGDB-supplied linker scripts indeed does not check for FLASH overflow when placing the initialization data for RAM sections.

    We have done several tests with the “> SRAM AT > FLASH” syntax and confirm that it solves the problem and is otherwise equivalent to the old one, so we have updated our linker script generation tool to use the new syntax and also changed the logic used by the “Additional Memories” page in VisualGDB.

    The next STM32 BSP update will include the linker scripts using the new syntax. As a workaround until then, please consider editing them manually, although the only difference in behavior would be the error message for FLASH overflows caused by the RAM initialization data (regular FLASH and RAM overflows are still reported correctly with both linker script versions).

    Thanks for providing detailed repro steps and sorry for the confusion – we have previously encountered many cases when the unexpected image layout was caused by optimization and have never received any reports on issues caused by the VisualGDB’s linker script format.

    in reply to: Switch to Advanced View window problem #24266
    support
    Keymaster

    Sorry, we tried reproducing it, but could not get the behavior you described. If you could upload a video demonstrating the problem and post it here, we should be able to see what is going on.

    in reply to: Clang IntelliSense auto complete not always showing up #24265
    support
    Keymaster

    The suggestions are automatically derived from scanning the code and cannot be adjusted. If you believe they are not working as expected and can reproduce it on a project that otherwise builds successfully, please share the repro steps and we will investigate.

    support
    Keymaster

    Hi,

    It is hard to pinpoint the exact reason for the code that was generated by the external tool, however we can provide you with instructions for troubleshooting this.

    Please try creating a regular “LEDBlink” project with the VisualGDB project wizard, set a breakpoint in HAL_IncTick() and run the program so that it hits. Then check the call stack.

    You should normally see the following stack:

    1. HAL_IncTick() itself
    2. The interrupt handler that calls HAL_IntTick().

    Running the “find all references” command on the handler should show that it’s referenced from the interrupt vector table (typically called g_pfnVectors). In turn, checking the map file for g_pfnVectors should show that it’s placed exactly at the beginning of the FLASH memory (where the CPU would expect the interrupt handler table to be).

    Once you can confirm it, please follow those steps backwards for the LL project (i.e. interrupt vector table -> specific interrupt handler -> call to HAL_IncTick()). If the system ticks are not working, one of those components is likely missing. If you are not sure, please let us know your findings and we will help you find a way to restore it.

    in reply to: ESP32 DEVKITC cannot connect or program #24262
    support
    Keymaster

    Generally, ESP32 devices are indeed less straight-forward than the ARM-based ones like CC32xx. The main reason for this is that instead of relying on the mature ecosystem of the ARM tools, Espressif is using a much less popular Xtensa core and had to create ports for many development tools that would support it. They also introduce new features and versions of the SDKs very fast, doing much less testing compared to the traditional ARM-based device vendors, that often results in strange errors that need to be reported to them. Given the price of their devices compared to the main ARM-based competitors, the extra initial setup and occasional troubleshooting with the new IDF releases might pay off on the long run.

    This specific error means that VisualGDB failed to connect to the OpenOCD (the tool for interfacing with JTAG hardware). Please try checking the connection test window for more specific error messages; if there are none – the connection might be blocked by your firewall. If disabling the firewall doesn’t help, please try ignoring the error, starting the debug session and checking the OpenOCD window in Visual Studio – it should contain more details.

    If nothing helps, please let us know and we will provide more detailed instructions on diagnosing this.

    support
    Keymaster

    The “while trying to download” message suggests that you are trying to download a remote file, not upload it. Please double-check your custom action. If you believe it is a bug, please share a screenshot of your setting, or the .vgdbsettings file.

    in reply to: VisualGDB running as TFS remote build failure #24256
    support
    Keymaster

    Hi,

    This looks like a bug that was fixed in the latest v5.4 release. Please try updating to it.

    support
    Keymaster

    No problem. We have rechecked it and indeed the custom shortcut output pane was not properly shown for some project types due to a recent switch to on-demand initialization of the VisualGDB extension.

    We have fixed it in this build: VisualGDB-5.4.103.3009.msi

    support
    Keymaster

    Good to know it work. We were just going to suggest that. VisualGDB does automatically find the installed Keil packs, however it won’t install/update them automatically. Hence we always advise first creating/opening a project with the Keil IDE to ensure all necessary components are present.

    support
    Keymaster

    Sorry about that, our bug. Please try this build: VisualGDB-5.4.103.3008.msi

    in reply to: BIN file size ecxeeds flash size with no error #24233
    support
    Keymaster

    OK, we have tried reproducing this issue with the default linker script file for STM32F030F4  (unfortunately, the project link you shared does not work without a login and generally we are not able to review the code/projects that does not come from us unless it triggers bugs in VisualGDB itself), using several variations of the attributes. Generally, unless you declare the variable as volatile, gcc optimizes it away (you can verify it with the offline disassembly). If you do declare it as volatile, you do get a linker error as expected.

    We have used the following definition (tried data/rodata and also with/without const):

    volatile __attribute__((section(".rodata"))) const char g_LargeVar[32 * 1024] = {1, 2, 3};
    
    int main()
    {
        volatile int test = g_LargeVar[0];
    }

    Please double-check if you can reproduce the problem with the default linker script coming from our STM32 BSP and with minimal modifications to the default LEDBlink source (i.e. just adding one global variable and the line accessing it). If not, the problem is likely caused by some other setting specific to your project.

    support
    Keymaster

    Thanks for the update. The .vgdbcmake file you attached looks very similar to the one we tested, so the crash is likely caused by some plugin, or Visual Studio component that is present on your machine, but not in our test environments.

    The easiest way to narrow it down would be to try reproducing the problem on a different machine (or a different user account) and if it doesn’t crash, comparing the other VS extensions and VS versions. Please also consider installing VS2019 Preview, as it will also start with a clean environment and VisualGDB now fully supports it.

    Alternatively, please try re-creating your project using the “Store files on Windows and upload them via SSH” mode. It will completely eliminate the “vgdb://” file paths used by VisualGDB, so the problem might stop triggering.

    BTW, sorry for the hiccups with the file attachment system. It is on our list, although we are currently prioritizing a few product updates over it.

    support
    Keymaster

    Thanks for sharing the details of your setup. Indeed the Advanced CMake Project System expects that the debugged executable would be a part of the CMake project, so that you could easily select it as a startup target via the Solution Explorer.

    To support your configuration better, we have added a new command for the top-level CMake project: Add->Add a Debug-only Target. This will allow importing an arbitrary executable on the target machine into the project, as if it was one of the regular CMake targets. Please try this build: VisualGDB-5.4.103.3006.msi

    Then the setup for the scenario you described will be much easier:

    1. Add the mono executable as a debug-only target.
    2. Set it as a startup target (also set the VisualGDB’s CMake project as a startup project).
    3. Specify the command-line arguments via VS project properties for that target (not VisualGDB Project Properties for the entire project).

    You would still need the custom actions to deploy the managed binaries (long-term we are planning to add a special Solution Explorer folder for deployed artifacts, but it has currently a relatively low priority compared to other scheduled features). If you would like to reuse the custom actions between multiple projects and don’t want to create them from scratch each time, please consider using the reusable action list files (you can create them from the regular custom action GUI).

Viewing 15 posts - 3,316 through 3,330 (of 7,873 total)