关于windows phone/store 开发的C++工具采集

[原文发表地址] C++Tools Acquisition for Windows Phone and Store Development [原文发表时间]2014/11/12 3:35PM 通过这篇博客,我们想要告诉您可以在Visual Studio 2015 预览版的C++模块中开发Windows 8.1 Store/Phone和Windows 8.0 Phone项目。接下来要介绍的都是关于Windows Store 和Windows Phone的应用程序。为了在开发Windows 8.1 Store/Phone和Windows 8.0 Phone项目能有更好的用户体验,VS2015提取了VS2013和VS2012最新版本中的C++编译器工具、头文件、库文件、项目设置和其他的工具。   安装 在Visual Studio 2015 预览版中,您可以开发Windows 8.1 Store/Phone和Windows 8.0 Phone项目。要用C++语言做到这一点,请选择图1中高亮部分的3个组件安装。如图1:安装界面。只要VS安装完成,您既可以创建新项目,也可以打开已存在的项目。                                           图1:安装界面   注意事项 已经存在的功能在Visual Studio 2015预览版的存在如下问题: C++ store和phone的单元测试 问题 使用VS2015生成新建的C++ Store, C++ Phone 8.1单元测试应用程序会失败,错误原因是不能找到头文件cppunittest.h   Windows Phone…

0

VS 2014 Preview 中的本地内存诊断

[原文发表地址]Native Memory Diagnostics in VS2015 Preview [原文发表时间]2014/11/21 7:19PM 在Visual Studio 2013 Update 2 和早期发布的VisualStudio 2015, CTP, 我们发布了一个内存诊断工具, 这个工具允许开发者截取应用程序的堆快照, 然后在终止它研究堆内容。在最初发布的版本中,支持查看堆管理和本地对象。并且在第一个Visual Studio2015 update CTP中增加了支持本机类型推导和值检验。 虽然这个工具是提供VisualStudio开发者含有一个收件箱内存分析器的一个良好开端, 但是在特定的程序状态下, 它缺乏一种轻松的分析堆内容的能力。因为为了更深层的研究数据,整个程序必须关闭。 改进的内存分析器进行预览 现在在Preview上,有一个新改进的内存分析器是可用的。它允许开发人员利用调试器强大的程序流程的控制力,并且在任何破发状态可以检验他们应用程序的堆内容。这是一个很好的对新的内存分析总结经验的一个概述。一个深入的特性总结完成了指令的激活功能。(我在那里找到它?章节),  在下面的这些指令是在第一次激活这个工具。 在调试期间,简单的按下F5将会启动新的分析器。现在为了查看堆快照不需要去终止程序。 这篇文章的剩余部分将集中介绍利用本机程序的新工具和详细介绍该工具的工作流程细节。 演示:分析 a Native MFC App 要展示新的内存分析器,一个被称为FamiTracker的MFC开源芯片定序器已经被加载到Visual Studio,并且为了建立新的编译器做了简单的修改。在启动内存分析器后,在应用程序中通过注册密钥和启动调试场景利用F5,工具加载。很快内存使用情况将被显示,并且下面的堆快照也将被显示:   快照可以在不同的点及时地的捕获堆状态,例如值仅可见于最近拍照时和处于破发状态时。 在这次练习中,对于FamiTracker,初始的程序状态是初始化序列UI:                                              FamiTracker 初始化编曲界面 另一个称为编辑器工具窗口会被打开为了编辑每一个编辑器的属性:                                           FamiTracker 编辑器窗口 利用新的内存分析器,为了更好的理解应用程序的内存消耗,我们将采取堆快照跨越两种程序状态。 首先,我们截取一个基本的快照为了储存初始化的堆内容: 工具编辑框被打开,这将在代码中触发一个断点,并且在程序状态中开始了一个变化,这个函数初始化工具编辑对话框和激活其它的一些辅助功能, 这将有助于创建工具编辑器的UI。 在OnInitDialog()开始断点的位置开始截取快照, 我们看到应用程序的堆内容之前,工具编辑器对话框启动分配对象。快照将列出对象类型,数量和内存占用。 由于我们在休息状态下, 通过双击某一行或者图标: 选择一个类型可以看到针对每一个实例的所有类型的分配情况,完整值和分配的调用堆栈。下面是所有CCHannelHandlerN163[]的实例:  …

0

Visual Studio 2013 Update 4 CTP1-GPU 使用率工具

[原文发表地址] GPU Usage tool in Visual Studio 2013 Update 4 CTP1 [原文发表时间] 2014/9/4 在发布了对Visual Studio 2013 Update 3 RC中图形诊断的一系列改进后,我们团队正致力于带给您更多的DirectX 应用的性能分析工具。在昨天发布的Visual Studio 2013 Update 4 CTP1(这里下载)中,您将在性能和诊断中心看到一个崭新的GPU使用率工具,您可以用它来收集和分析DirectX应用的GPU使用率的数据。CTP1支持本地运行Windows 桌面应用程序和Windows 应用商店应用。在后续的发布中,我们将会把对Window Phone 应用和远程分析的支持加入其中。您可以在这里找到相关文档,通过Channel9视频观看实时演示,或者通过此篇博客的余下内容获得更多有关此功能的信息。 如果所有的游戏以60FPS运行且没有任何性能问题可调查,那这个世界就太棒了!但是事实上,在开发和发布过后的时间里,一些应用程序往往不能达到它们的目标帧率-不论是PC上的60FPS还是小型数据终端的30FPS,或者那些应用程序的帧率在会话中期大幅度降低。 从:当多核可被使用时却仅利用了单核CPU,到:GPU渲染一个过于复杂的点阵,造成DirectX应用性能问题的原因变化多端。通常从剥离主要问题到底是超过了还是未达到CPU或GPU使用率开始,会对找到原因有很大帮助。这个GPU 使用率工具可以帮助您判断CPU或GPU是否是此应用的性能瓶颈。您也可以调查每一个GPU事件的时间,前提是在当前安装的是支持的显卡和最新的驱动。请查看此文档中支持的显卡列表,并登陆您的显卡供应商网站(Intel, NVidia, AMD)下载最新的驱动为此项功能提供GPU事件数据。 让我们开始第一次尝试吧! GPU 使用情况工具可以通过性能和诊断中心来加载,菜单:调试->性能和诊断或Alt+F2. 从这里您可以选择仅勾选GPU使用率或勾选包含其在内的其他工具,例如CPU使用率。 点击开始,将开始在用DirectX工程模板新建的默认DirectX工程上单独运行GPU使用率。在显示的用户账号控制对话框点击Yes,给收集数据赋予权限。 GPU使用率工具开始收集数据,并在打开的诊断会话文件中显示三部分图片,这些图片反应的实时数据不但包括在图形诊断工具中同样可见的帧时间和FPS,还包括一个崭新的GPU使用率图片用以展示GPU繁忙程度。 现在让我们点击底部的结束收集链接或顶部的结束按钮生成报告。生成的报告显示了实时会话的上述三部分图片。如果您想要深入分析时间轴的一段特定区域,例如若一段帧率或GPU使用率突然下降,您可以在时间轴选择一段区域并点击底部的这里链接查看GPU使用率数据的细节。在这个实例中,这个应用在整个会话过程中运行流畅,因此我们可以选取任意一段来调查GPU细节信息。 GPU细节信息窗口将会单独于此会话窗口打开。上半部分是时间轴视图,展示了每一个CPU内核和GPU引擎随时间的使用情况,下半部分是一个事件列表,展示了发生在GPU上的图形事件列表。需要注意的是这个事件列表的数据需要图形驱动的支持,因此如果您的显卡不支持或者您未安装最新的驱动,事件列表是不可见的,在这种情形下所有的时间将显示为:unattributed。您可以查看此文档中支持的显卡列表,并登陆您的显卡供应商网站(Intel, NVidia, AMD)下载最新的驱动为此项功能提供GPU事件数据。 所有使用GPU的进程都将被捕获,且每一个进程将在时间轴视图中有一个不同的颜色。在这个实例中,黄色代表了性能分析的目标进程,也就是App5.exe。 当您点击或是在事件列表中进行导航,您将看到在CPU和GPU泳道上显示的弹出小控件,展示所选事件在GPU上的执行时间,以及与它相对应的CPU工作发生在CPU上的时间。泳道中的淡灰色垂直线标记了每个监视器的垂直同步信号Vsyncs。Vsyncs线可以用来作为理解是否某个Present调用丢失了Vsyncs的参考。在每两个Vsyncs之间必须有一个Present调用,确保这个应用稳定达到60FPS。 这个GPU详细视图提供了以下有用的信息: CPU和GPU在一个更细粒度层次上的繁忙程度 DirectX事件在CPU上被调用的时间和在GPU上被执行的时间 每一个事件在GPU和CPU上消耗的时间 是否因为Present调用丢失Vsyncs而导致目标帧率下降 此功能的好处对于这个实例而言并不明显,因为这个应用过于简单,且GPU和CPU都不繁忙。在下一个阶段,我们将要在一个更现实的应用中尝试看看这些数据是如何被使用的. 让我们开始分析一个更现实的应用 在这个实例中,我们将会用到一个的内部测试的应用程序,它叫CityDemo,是一个渲染模拟城市的3D场景。这一次我们将要试着在同一个会话里面运行GPU使用率和CPU使用率两个工具。如果说要判断一个应用是CPU受限还是GPU受限仅用一个GPU使用率工具是必需的话,那么加入CPU使用率信息将会帮助我们更快地分析这种情况下是否CPU是问题的根源。 让我们再次加载性能和诊断中心,但这次我们选择GPU使用率和CPU使用率两个工具。FPS图告诉我们这个应用以40FPS运行。在FPS图中的红线代表默认的阀值:60FPS。如果您的目标是更低的帧率,可以使用下拉菜单降低到30FPS。而且您将注意到会显示一个CPU使用率图因为我们选择了CPU使用率工具。这个提供了一个GPU和CPU状态紧密结合的视图。在这种情况下,CPU利用率差不多20%,GPU使用率大约60%。那么CPU和GPU都没有满负荷,但是为什么这个应用程序没有达到60FPS? 为了解开这个疑惑,让我们深入GPU详细信息去看看,关于为什么这个应用运行缓慢是否能得到任何线索。因为这个图片是不变的,所以我们可以选择一段区域并打开GPU详细信息视图。从详细信息视图中的时间轴我们可以得到:…

0

Visual C++ 中的跨平台移动开发

[原文发表地址]Cross-Platform Mobile Development with Visual C++ [原文发表时间] 2014/11/12  3:35 PM 概述 现代的应用程序的客户要求应用支持多种设备平台(如Windows,Android和iOS)。如今,存在着多种方法书写应用程序来实现对这些设备的平台支持。一种方法是简单地在不同的源代码树中的创建多个版本,换句话说一个应用程序的Windows特定版本, iOS特定版本和Android特定版的本地技术在平台可用。虽然这是一个简单的直接的方法,但相当于开发成本更高昂和时间更长。 C ++是唯一具有编写高效,快捷,功能丰富的跨平台的移动代码的能力的语言,一次编译就可在这些不同的设备平台共享。 Visual Studio 2015预览版(这里下载)推出支持开发人员能够构建跨平台移动本地(C/C++)针对Windows平台(通过Visual C ++工具链C1XX/ C2)和Android平台(通过Clang/LLVM的二进制文件工具链)。基于这一点,开发人员将能够轻松地分享他们的夸平台移动代码,同时使用更先进的开发功能,例如跨平台智能感知,重构,跨平台的调试和更多的推动开发人员的工作效率。 而Android平台与API等级3推出了Native Development Kit (NDK),它能够在C/ C++创建和使用类库。使用VisualStudio 2015预览版,开发人员将能够:  轻松构建动态共享库和静态库,他们为应用程序封装了所有本地(C/ C++)代码。这些库可以作为如使用了Xamarin和Java技术等其他Android应用(.apks)的一部分。我们一直致力于Xamarin,利用C / C++代码能够流畅的在Visual Studio中构建Xamarin的Android应用程序。 创建的Android本机-活动应用程序,本机-活动的应用程序是全部由本地代码(C/C++)实现,一般用于需要先进的图形处理的游戏和应用程序。开发人员将能够建立,调试和部署Android的本地-活动应用程序就和在模拟器和实体机的一样。 快速迭代编辑,编译,调试周期,通过利用快速的x86利用模拟传感器基于Android的模拟器进行部署和有针对性的应用测试(如放大,方向,加速度计,电源等)。欲了解更多信息,请参阅本博客,这里。 入门 为了开始使用Visual C++跨平台移动开发技术,请先下载Visual Studio2015预览版(这里下载)。在运行安装程序时,请选择以下安装选项(‘Visual C++跨平台移动开发’),如下图1所示。      图1:选择Visual C++跨平台移动开发选项                       图2:选择‘重启并安装’选项                         图3:选择需要额外软件         主安装完成后,Visual Studio给跨平台移动开发的用户提供了一个额外的第三方软件安装作为次级安装程序的一部分,如图2所示(选择“重新启动并安装”选项)。在系统重启后,次级安装出现时,请确保以下条目(Android SDK,Android NDK,ApacheAnt,Oracle Java SDK和Microsoft Visual…

0

Rase4Fun网页的VC编译器组件

[原文发表地址] Visual C++Compiler on Rise4Fun [原文发表时间] 2014/11/19  6:42 PM         经历了CTP和发售预览版后。 我们尝试更加频繁的制作VisualC++可用的编译器组件。于此同时,我们现在决定通过http://webcompiler.cloudapp.net/网站 提供一个 vc++编译器的实时开发分支视图。         这个站点允许你不用安装visual studio就可以编译简单的代码.当然,他可以让你尝试最新的编译器特性.请注意这些最新的编译器组件可以让我们提前预览编译器团队当前的工作内容。它们最终都将经历更严格的质量控制。        我们计划每月更新组件以保持它们使用最新的版本。        如果对这个网站有任何反馈,请在评论框中添加.          公告  

0

VS2015预览版中的C++11/14/17 的特性

[原文发表地址] C++  11/14/17 Features In VS 2015 Preview [原文发表时间] 2014/11/17 5:59 PM Visual Studio 2015 预览版已经发布,所以这里给出一个预览版本关于核心语言的特性升级列表: C++11核心语言特性 VS 2013     VS 2015预览版       说明 Rvalue references 部分 是   ref-qualifiers 否 是   Non-static data member initializers 部分 部分 [1] Variadic templates 是 是   Initializer lists 部分 部分 [1] static_assert 是 是   auto…

0

C++编译器关于警告的改进

[原文发表地址]Improvements to Warnings in the C++ Compiler [原文发表时间] 2014/11/12 3:35PM     在vs2015 Preview版本中,对于C++编译时出现的警告,我们做了大量的改善。     Printf系列函数      C++社区已经声明,printf 以及其他的输出函数仍然被大量使用,并且将会提供更加严密的判断。在VS2015 Preview版本中,编译器将会通过格式行来检查你提供的参数的数目是否和函数期望的参数个数一致。例如: printf(“%d %d\n”, 1); //C4317 printf(“%d\n”, 1, 2); //C4422 编译器将会报出如下: warning C4317: ‘printf’ : not enough arguments passed for format string warning C4422: ‘printf’ : too many arguments passed for format string 更进一步,如果使用了一些不允许用于printf变量中的说明符,这时编译器将会报告如下的警告,例如:    int n;    printf_s(“Test %n”,…

0

C++中的Resumable功能

[原文发表地址] Resumable functions in C++  [原文发表时间] 2014/11/12 3:35PM 在去年的CTP版本中,我们提供了惊鸿一瞥的resumble功能,并在Visual C++编译器中支持await。在Visual Studio 2015 预览版本中,我们作了进一步的探索之旅,并提供了更常规的解决方案。为执行ISOC++ 标准,在此预览版本中,我们提供称之为“Resumable functions”的试验性实施方案。这项工作仍在进展之中,但是我们相信这是正确的时间开放讨论这一专题,并从中寻找设计反馈。可以通过这个CppCon视频,了解这一优秀专题概论。该演示的幻灯片在这儿。        在本预览版本中,此功能仅适用于x64。为了使用这一试验性功能,你需要在源文件中包含一些新的头文件(例如”<experimental/resumable>”),并在编译命令行中指定编译选项″/await”。        这项功能建立在协同程序这一概念之上,你可能会在其他语言,(如Python,Ruby等)遇到这一概念。它是一个广义的常规实体,除了支持传统的调用和返回操作外还支持挂起和恢复操作。这非常简单,可以把它想象成为一个方法,不是返回一个调用值,而是在进程中间停止,并把产生的值赋予调用值。下一次调用协同程序时,它在停止位置恢复,直到产生另一个值。       下面是一些示例代码,可以帮助你在此功能的关键点入门:       异步操作       下面的代码片段显示了编码,如函数经历了像科学计算或IO等长时间运算操作后是怎么样的。请注意建议关键字’__await’目的是用于表示等待异步操作的使用结果.   #include <future> using namespace std; using namespace std::chrono; // this could be some long running computation or I/O future<int> calculate_the_answer() { return async([] { this_thread::sleep_for(1s); return 42; }); } // Here is a resumable…

0

现在开始体验Visual Studio 2015 预览版

       原文发表地址:Visual Studio 2015 Previewis Now Available     原文发表时间:2014/11/12 3:38 PM        对于Visual Studio 2015 预览版, 我们所完成的重大改进之一是改善了C++的体验,增加了对安卓的支持,提高了运行时间和编译时间性能,改善了标准一致性,以及提高了编辑体验。预览版现在可以从这里下载使用,而且可以把它当作一个VM在里面运行Azure(如果你是一个 MSDN 用户,你可以免费使用Azure 150小时)。让我们深入看看这次Release新增加的内容: C++跨平台移动开发 C++之所以吸引人是因为它所提供的可移植性以及在不同的平台上再次使用相同代码的可能性。使用VisualStudio 2015 预览版,现代应用程序开发人员可以使用Visual C++工具链(c1xx, c2)来编译支持微软Windows平台的程序,以及Clang / LLVM 来编译支持安卓平台的应用程序(不久后计划支持IOS)。这使得在多种平台上(Android/Windows/IOS)重用C++库、), 共享跨平台代码、生成高质量的Xanarin 原生Android应用程序、更加容易。这几种系统(Android/Windows/iOS,使用Visual Studio 的强大功能创造高质量的Xamarin 天然 安卓以及天然活性的应用。进一步了解,请查看Visual C++跨平台移动开发。 C++11, C++14, C++17(拟定) 兼容性 这些标准对跨编译器的支持提高了程序的可移植性。在Visual Studio 2015 预览版中 ,Visual C++比之前更加支持用户定义数据 标识(C++11),泛型lambda(C++14), await关键字(C++17拟定中)这些新特性标准. 想要一览Vs的一致性,请查看StephanLavavej (STL)的博客。同时你也可查看关于C++语言功能、C++编译器对警告功能的的改进,以及C++的可恢复功能的详细介绍。 提高工作效率 & 提高编译时间 “效率”和“C++”这两个词不会常常用在同一个句子中除了在挑剔IDE的一些性能,编译进程或者诊断功能的时候。它们中的任何一个方面性能出现问题都会减缓开发的进程。使用VisualStudio 2015 预览版,你可以看到这些改进,包括每个对于C++的重构、智能数据库的集结、关于模板推演的简化快速咨询;更多的静态库函数的链接、新的快读PDB生成技术、链接器(编译)的多线程;使用VisualStudio图形分析器不但可以(VSGA)分析图形空间的专用空间,而且可以在没有重新运行APP(诊断)的情况下查看改变着色代码后造成的影响。更多关于增量构建,请查看加快增量开发构建方案。更多关于C++重构方面的改进,请查看关于visual…

2

VS2015中单个文件智能感知及IDE改进

[原文发表地址]:Single-File IntelliSense and other IDE Improvements in VS2015 [原文发表时间]:2015/04/29 2:00 PM C++世界您好! 随着今天RC的发布,我们在IDE中得到了一系列的改进,您可以通过单个文件智能感知功能更简单的打开一个文件(不再需要VC工程),并可以在VS中获得浏览、智能感知以及导航的支持! 没错,现在您可以看到所有的改进: 除了原文件!请观看Channel 9 video获取更多信息!  

0