【问题标题】:Running dotMemory from Command Line从命令行运行 dotMemory
【发布时间】:2016-05-19 18:45:23
【问题描述】:

有没有办法直接从带有参数的命令行运行 dotMemory?我已经使用了 dotCover 和 dotTrace,它们有非常不同的实现来实现这一点(dotCover 直接来自命令行,而 dotTrace 需要生成的 xml 配置)。我看过 dotMemoryUnit,但它似乎不接受额外的参数,我也没有找到任何其他关于如何执行此操作的信息。

【问题讨论】:

  • 你到底想做什么?
  • @Ed.ward 我们想直接从带有参数的命令行中获取 dotMemory,因为我们试图在夜间自动化一些分析。
  • 您是要运行 dotMemory 来启动分析会话,还是要在某些时间点获取内存快照,或者可能是其他什么?
  • @Ed.ward 我们有可以运行和关闭程序的测试。从 Visual Studio 中的运行看来,一旦程序完成,分析就会完成,并且可以导出到一个不错的工作区文件。这就是我们正在寻找的东西,因为它将从命令行运行,开始然后完成测试,最后我们将获得一个保存在某处的工作区文件。我们使用 dotTrace 做到了这一点,但使用 dotMemory 没有运气。编辑:参数部分与开始我们的测试有关。
  • 我回答了你的问题,但仍然不明白你将如何以及在什么时候获取内存快照。如果您提供更多信息,我会描述如何实现,您需要什么,更详细。

标签: resharper jetbrains-ide


【解决方案1】:

点内存单元

如果您运行测试,dotMemory Unit 可能更适合您的需求。运行 dotMemoryUnit.exe -targetExecutable="运行测试的应用程序",您的应用程序将在分析器下启动。有关 doMemoryUnit.exe 命令行参数的更多详细信息,您可以找到 here

在您的测试中,您可以调用 dotMemoryApi.SaveCollectedData 方法,它将保存一个包含 one 测试的所有数据的工作区,但如果没有获取内存快照,则不会保存任何内容。

独立点内存

dotMemory 有一个解决方法。如果您运行 dotMemory.exe /p:path_to_xml_configuration.xml 它将自动启动并运行分析。 注意:dotMemory 会删除 /p 键中传入的文件,所以请复制它。 您熟悉 dotTrace xml 配置,因此您需要创建几乎相同的配置但替换

<Info type="PerformanceInfo"> 

这个节点

<Info type="MemoryInfo">
  <CollectAllocations>...</CollectAllocations>
</Info>

CollectAllocations 值可以启用Postponed - dotMemory 不会立即开始收集分配数据,但可以稍后手动或通过分析 API 将其打开。或 EnabledImmediately(是的,有错字) - 如果在手动(而不是 Profiling API)模式下运行,将从头开始收集分配数据。

[编辑]

dotMemory 命令行工具

新的免费工具允许使用命令行获取快照

dotMemory.exe get-snapshot MyApp --save-to-dir=C:\Snapshots

阅读这篇博文了解详情 https://blog.jetbrains.com/dotnet/2017/05/16/dotmemory-command-line-tools/

【讨论】:

  • @ivanov dotMemory 控制台运行程序随 v. 2017.1 一起发布 https://blog.jetbrains.com/dotnet/2017/05/16/dotmemory-command-line-tools/
猜你喜欢
  • 1970-01-01
  • 2018-01-30
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 2013-10-17
  • 2015-09-01
  • 2016-06-16
相关资源
最近更新 更多