在Visual Studio中调试嵌入式ARM设备

  [原文发表地址]Debugging an embedded ARM device in Visual Studio [原文作者] Marc Goodner-MSFT [原文发表时间] 2018/1/10 我们在15.5版本的Visual Studio 2017中引入了对ARM GCC交叉编译的支持。在15.6 Preview 2中,我们添加了对调试的支持。这个调试功能的概述源自ARM交叉编译入门的安装,并将作为补充进行集成。 首先,确保输出具有调试符号很重要。在从ARM在线编译器导出的GCC项目中,他们不这样做。要添加它们,请在tools和flags部分下编辑makefile,并为GCC和G ++命令添加-g标志,如下所示。           CC      = ‘arm-none-eabi-gcc’ ‘-g’ …           CPP     = ‘arm-none-eabi-g++’ ‘-g’ … 现在,在构建二进制文件并刷新设备后,右键单击二进制输出,然后选择“调试”和“启动设置”。   在弹出的对话框中选择C / C ++调试微控制器(gdbserver)。   这将创建一个launch.vs.json,其中包含许多与嵌入式调试相关的选项.有很多方法可以调试这些设备,所以您在这里填写的内容将特定于您的开发板,硬件调试器及其提供gdbserver接口的相关软件。我们提供尽可能多的默认和提示,我们可以帮助你。在这个预览中,一些发出的环境变量还没有工作,你需要用所需的值替换它们。 $ {workspaceRootFolderName},您的文件夹名称 $ {env.gccpath},您的VS安装路径跟在Linux \ gcc_arm \ bin之后 $ {debugInfo.linuxNatvisPath},如果你有一个Natvis文件的路径。这是很好的删除,因为它是针对特定的情况 我将通过使用OpenOCD对ST Nucleo-F411RE进行配置。这个过程与大多数电路板相似。 首先,在输出中更改程序名称以指向您的.elf文件。…

0

Linux项目系统,Linux控制台窗口,同步和附加到进程的Linux C ++工作负载改进

[原文发表地址] Linux C++ Workload improvements to the Project System, Linux Console Window, 同步 and Attach to Process [原文发表时间] 2018/03/13 在Visual Studio 2017 15.7 Preview 1 中,基于你们的反馈我们对Linux C++ 工作负载的支持进行了一些改进。你可以在这里了解更多关于我们在Visual Studio中的Linux C++工作负载。 MSBuild 项目系统改进 我们在C/C++的常规属性页面上为Linux项目添加了一些新属性。最大的并行编译作业允许你启动其他编译过程。默认值是1,但可以增加以提高构建吞吐量。公共项目包含目录允许你指定要在解决方案中暴露给其他项目的项目中的目录。在消费项目中,添加对公开其包含目录的项目的引用,现在可以从源中引用它们。 Linux 控制台窗口改进 现在运行或者调试Linux项目时,将显示Linux控制台窗口。如果你停靠在这个窗口,这个位置将会在随后的运行中被记住。当你从调试模式返回时,窗口将被关闭。我们还修复了开启/关闭回声的处理,以正确显示来自远程系统的消息。  CMake 和打开文件夹的同步改进 我们在打开文件夹和CMake场景中的同步支持也看到了一些改进。以前,即使你已取消启动它的任务,同步也会运行完成,这已得到修复。如果同步是由构建触发的,例如你取消构建,同步现在将取消执行。我们还进行了一些性能改进,并为root用户启用了同步。你现在也可以使用CMakeSettings.json中的rsyncCommandArgs选项将其他命令参数传递给同步。 附加到流程改进 你已经向我们反馈了关于需要对远程Linux调试的附加到流程方案进行更多控制的需求。我们通过Linux项目或打开文件夹的正常调试启动设置添加了许多控件,例如启用子进程调试,预附连命令等。要启用此位置,请使用名为Microsoft.MIEngine.Options的文件。 xml在你的解决方案或工作区的根目录中。这是一个简单的例子。 <?xml version=”1.0″ encoding=”utf-8″?> <SupplementalLaunchOptions>     <AttachOptions>       <AttachOptionsForConnection AdditionalSOLibSearchPath=”/home/user/solibs”>         <ServerOptions MIDebuggerPath=”C:\Program Files…

0

构建时间改进建议:关闭/MAP,使用PDB

[原文发表地址] https://blogs.msdn.microsoft.com/vcblog/2018/03/14/build-time-improvement-recommendation-turn-off-map-use-pdbs/ [原文作者] YongKang Zhu [MSFT] [原文发表时间] 3/14/2018 映射文件是一个纯文本文件,其中包含有关链接器生成的二进制文件中存在的某些名称和符号的信息。它还包含二进制文件中的所有段的详细信息(代码,数据等)以及每个符号定义在哪个OBJ / LIB中。Windows调试器(如windbg.exe)可以使用映射文件来帮助定位程序崩溃的位置。映射文件是一种古老的技术:使用MSVC工具集的现代版本,PDB(程序数据库)文件可以完成所有映射文件的工作。 生成一个映射文件需要很长时间。如果你不需要映射文件但却在构建时看到了链接器选项/MAP,你应该移除它加快构建速度。最近我们已经完成了加速生成映射文件的工作,但是生成映射文件仍是一个缓慢的过程。 如果你是少数需要映射文件的人之一(例如,为了快速检查感兴趣的函数集或数据是否按照预期的或正确的二进制顺序排列),请放心,我们不会移除它。但是,以下几点将说明为什么您应该关闭/ MAP并使用PDB: 关闭映射文件生成可以缩短构建时间。虽然我们最近在完全链接场景中提高了映射文件生成的吞吐量,但链接器还是无法增量更新先前链接生成的映射文件,因为这会影响增量链接吞吐量。跟PDB文件不同的是,在增量链接期间可以通过链接器精准的更新PDB文件。 与PDB文件不同,二进制文件与其对应的映射文件之间没有紧密的绑定。跟踪哪个映射文件对应哪个版本的二进制文件是很困难的。 与PDB文件不同,符号服务器不支持映射文件。 PDB文件中的信息是映射文件中的内容的超集。实际上,几乎所有的版本都会默认生成PDB文件。 最后,我们已经发布 DIA API ,人们可以使用它来编写自己的工具来从PDB文件中检索当前在映射文件中可用的所有信息。 最后 我们知道构建的吞吐量对于开发人员非常重要,我们正在继续改进我们的工具集的吞吐量性能。你可以阅读我们最近发布的博客 Visual Studio 2017 吞吐量的改进和建议 来了解更多我们为提高吞吐量所做的事情。记住检查你的构建选项看看你是否在生成不必要的映射文件! 如果您对我们有任何意见或建议,请告诉我们。您可以通过在下方评论,通过电子邮件(visualcpp@microsoft.com )与我们联系,您也可以通过产品中的 帮助>报告问题 或通过 开发者社区提供反馈。您还可以在Twitter(@VisualC )和Facebook(msftvisualcpp )上找到我们。

0

Visual Studio 2017 15.6 Preview 2 中的C++核心准则检查

[原文发表地址]:C++ Core Check in Visual Studio 2017 15.6 Preview 2 [原文发表时间]:2018年1月18日 [作者]:Andrew Pardoe [MSFT] 这篇文章是由Sergiy Oryekhov写的。 请注意,docs.microsoft.com的某些链接尚未解决。 并非所有的官方文档都是为这个主题撰写的。 Visual Studio 2017 15.6 Preview 2包含一组对C++ 核心准则检查扩展的更新。 我们添加了更多检查来帮助您完成代码更清洁,更安全和可维护的工作。 本文档是对新规则的简要概述。 有关这些规则的更多详细信息以及可用规则的更新列表可以在此处找到: Visual Studio 2017 15.6预览2中的C ++ 核心检测:整数溢出规则 Visual Studio 2017 15.6预览2中的C ++ 核心检测:生命周期规则 C ++核心准则检查参考 本版本还对本地代码分析工具的用户体验进行了总体改进:Visual Studio 2017 15.6 预览 2的C ++静态分析改进 新的规则集 本版本中引入了两个新的规则类别,其中可以在项目配置中选择相应的规则集文件以过滤静态分析结果: 算术规则 这些规则专注于算术运算可能导致数据丢失,未定义行为或溢出的情况。 生命周期规则 这套规则以前以实验性C…

0